为什么对服务对象有静态弱引用?
Why have a static weakreference to service object?
我在下面看到了这个 android 代码。是否有在服务中创建静态弱引用对象以获取其引用的用例?我知道静态变量不符合垃圾收集的条件。一般来说,创建任何静态变量的弱引用会改变它的 gc 属性吗?
例如:
private static WeakReference<MyService> mService;
public static MyService getInstance(){
if(mService != null){
return mService.get();
}
return null;
}
然后在我的 onCreate
public void onCreate(){
super.onCreate();
mService = new WeakReference<MyService>(this);
}
WeakReference 使服务可以被垃圾回收,即使 activity 仍然有引用它的变量。静态意味着它将在 activity 结束后持续存在。因此,您获得了对在调用之间持续存在的服务的引用,但仍允许对服务进行 gced。 (WeakReference 本身不能被 GC,但不应该占用太多内存)。
我在下面看到了这个 android 代码。是否有在服务中创建静态弱引用对象以获取其引用的用例?我知道静态变量不符合垃圾收集的条件。一般来说,创建任何静态变量的弱引用会改变它的 gc 属性吗?
例如:
private static WeakReference<MyService> mService;
public static MyService getInstance(){
if(mService != null){
return mService.get();
}
return null;
}
然后在我的 onCreate
public void onCreate(){
super.onCreate();
mService = new WeakReference<MyService>(this);
}
WeakReference 使服务可以被垃圾回收,即使 activity 仍然有引用它的变量。静态意味着它将在 activity 结束后持续存在。因此,您获得了对在调用之间持续存在的服务的引用,但仍允许对服务进行 gced。 (WeakReference 本身不能被 GC,但不应该占用太多内存)。