SyncAdapter静态字段警告

时间:2018-05-16 12:16:08

标签: android android-service android-context android-syncadapter

我的代码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开发者页面中的情况。那么,这样做是对还是错?如果是错的,那么正确的方法是什么? 我无法找到关于这个特定点的任何信息......

1 个答案:

答案 0 :(得分:0)

事情是Service延伸Context。您不应该链接到静态字段中的上下文,这可能是内存泄漏的原因(因为即使垃圾收集器将销毁对象,静态链接仍然可用,并且仍将保持上下文对象不被销毁)。 我认为这里的解决方案是删除static修饰符。这可能是错误添加的。