取消注册应用程序范围的ContentObserver

时间:2015-11-10 14:06:06

标签: android android-contacts android-contentresolver

我希望收到有关联系人提供商更改的通知,因此我决定实施自定义ContentObserver

public class ContactsChangeObserver extends ContentObserver {

    private final WeakReference<Context> contextRef;

    public ContactsChangeObserver(Context context) {
        super(new Handler(Looper.getMainLooper()));
        this.contextRef = new WeakReference<>(context.getApplicationContext());
    }

    @Override
    public void onChange(boolean selfChange) {
        onChange(selfChange, null);
    }

    @Override
    public void onChange(boolean selfChange, Uri uri) {
        Context context = contextRef.get();
        if (context != null) {
            // do work
        }
    }
}

我最感兴趣的是在我的应用程序处于后台时接收更新,因此onChange中的代码可能只是将标记设置为SharedPreferences以供稍后处理。我是在自定义Application课程中注册观察者的。 onCreate方法。这种方法的问题显然是没有直接的方法来取消注册观察者,如果我的应用程序被多次重新创建,这将导致许多过时的观察者。所以我的问题是,是否有更好的方法来实现我的用例?

0 个答案:

没有答案