我的应用程序上有一个 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()
方法的重载,该方法采用两个参数:boolean
和 Uri
。尝试按如下方式更改您的代码:
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/