我的应用程序上有一个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();
}
}
答案 0 :(得分:1)
我认为问题在于较新的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();
,但这种方式将允许在一个地方进行任何可能的未来修改。此外,对super.onChange()
的调用是不必要的,因为重写的方法在超类中是空的。