我的代码SyncService
:
public class SyncService extends Service {
private static SyncAdapter syncAdapter = null;
private static final Object syncAdapterLock = new Object();
@Override
public void onCreate() {
synchronized (syncAdapterLock) {
if (syncAdapter == null) {
syncAdapter = new SyncAdapter(getApplicationContext(), true);
}
}
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return syncAdapter.getSyncAdapterBinder();
}
}
我在此处根据Android开发者页面制作的代码:https://developer.android.com/training/sync-adapters/creating-sync-adapter#CreateSyncAdapterService
问题是:static
上的SyncAdapter
抱怨:
不要将Android上下文类放在静态字段中(静态 参考' SyncAdapter'其中有字段' context'指向 '上下文&#39);这是一个内存泄漏(也打破了Instant Run)
但这就是Android开发者页面中的情况。那么,这样做是对还是错?如果是错的,那么正确的方法是什么? 我无法找到关于这个特定点的任何信息......
答案 0 :(得分:0)
事情是Service
延伸Context
。您不应该链接到静态字段中的上下文,这可能是内存泄漏的原因(因为即使垃圾收集器将销毁对象,静态链接仍然可用,并且仍将保持上下文对象不被销毁)。
我认为这里的解决方案是删除static
修饰符。这可能是错误添加的。