android - ContentObserver 不通知以上 API 17

标签 android contentobserver

我的应用程序上有一个 ContentObserver,用于检查联系人何时被编辑,我已经使用以下代码实现了它,它适用于 Android API 低于 17 但不是 17 及更高版本的设备。

observer = new MyContentObserver();
getApplicationContext().getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, observer);


private class MyContentObserver extends ContentObserver
{
    public MyContentObserver()
    {
        super(null);
    }

    @Override
    public void onChange(boolean selfChange)
    {
        super.onChange(selfChange);
        cache.clearCache();
    }
}

最佳答案

我认为问题是较新的 API 级别利用了 onChange() 方法的重载,该方法采用两个参数:booleanUri。尝试按如下方式更改您的代码:

private class MyContentObserver extends ContentObserver
{ 
    public MyContentObserver() 
    { 
        super(null); 
    } 

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

    @Override
    public void onChange(boolean selfChange, Uri uri)
    {
        cache.clearCache();
    } 
}

您可以在两种方法中直接调用 cache.clearCache();,但这种方式将允许在一个地方进行任何可能的 future 修改。此外,调用 super.onChange() 是不必要的,因为重写的方法在父类(super class)中是空的。

关于android - ContentObserver 不通知以上 API 17,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23024556/

相关文章:

android - ContentObserver 在一段时间后停止工作

android - ContentObserver 没有调用

android - 从 contentProvider.update() 更改 uri 的 notifyChange

Android通知栏长时间连续发送通知时CPU占用率升高

java - 仅对按钮的颜色进行动画处理

java - 从 Android 设备到亚马逊网络服务器 S3 的 HTTP 直播

android - 新权限机制如何适用于旧应用程序?

java - 启动时未调用内容观察者的 Onchange

android - ContentObserver 的生命周期?

android - 禁用媒体 Controller android 的向前搜索和向后搜索?