【发布时间】:2021-06-27 04:31:12
【问题描述】:
我是 Java 新手。 我不明白我做错了什么。我在静态内部类中设置了对外部类的弱引用。调试告诉我弱引用设置正确。但是当调用回调(LocationGps locatGps=locationGps1.get();)时,弱引用为空。
public class LocationGps implements OnMapReadyCallback, PermissionsListener {
private LocationChangeListeningActivityLocationCallback callback =
new LocationChangeListeningActivityLocationCallback(this);
private static class LocationChangeListeningActivityLocationCallback
implements LocationEngineCallback<LocationEngineResult> {
private final WeakReference<LocationGps> locationGps1;
LocationChangeListeningActivityLocationCallback(LocationGps locationGps){
locationGps1 = new WeakReference<LocationGps>(locationGps);
}
@Override
public void onSuccess(LocationEngineResult result) {
Log.wtf("WHS locationGPS", String.valueOf(result.getLocations()));
LocationGps locatGps = locationGps1.get();
locatGps.collbackSetLocation(result.getLastLocation());
}
@Override
public void onFailure(@NonNull Exception exception) {
}
}
}
谢谢。
【问题讨论】:
-
为什么这一定令人惊讶?您是否在某处对
LocationGps有其他引用?
标签: java static inner-classes weak-references