Java 为什么对服务对象有静态weakreference?
我在下面遇到了这个android代码。是否存在在服务中创建静态weakreference对象以获取其引用的用例?我知道静态变量不适合垃圾收集。一般来说,创建任何静态变量的弱引用是否会改变其gc属性 例如:Java 为什么对服务对象有静态weakreference?,java,android,service,garbage-collection,finalize,Java,Android,Service,Garbage Collection,Finalize,我在下面遇到了这个android代码。是否存在在服务中创建静态weakreference对象以获取其引用的用例?我知道静态变量不适合垃圾收集。一般来说,创建任何静态变量的弱引用是否会改变其gc属性 例如: private static WeakReference<MyService> mService; public static MyService getInstance(){ if(mService != null){ return mService.
private static WeakReference<MyService> mService;
public static MyService getInstance(){
if(mService != null){
return mService.get();
}
return null;
}
私有静态WeakReference mService;
公共静态MyService getInstance(){
if(mService!=null){
返回mService.get();
}
返回null;
}
在我的onCreate中
public void onCreate(){
super.onCreate();
mService = new WeakReference<MyService>(this);
}
public void onCreate(){
super.onCreate();
mService=新的WeakReference(此);
}
WeakReference是这样的,即使活动仍然有一个引用它的变量,也可以对服务进行垃圾收集。静态意味着它将在活动结束后保持。因此,您可以获得一个对服务的引用,该服务在两次调用之间保持,但仍然允许对该服务进行gced。(WeakReference本身不能被GCed,但不应该占用太多内存)。但是如果变量是静态的,它就不符合gc的条件,对吗?那么静态WeakReference不是一个矛盾修饰法吗?不,WeakReference本身是不可能的。它所持有的参考文献是