ContentObserver не уведомляет об указанном выше API 17
У меня есть ContentObserver в моем приложении, чтобы проверить, когда контакт редактируется, я реализовал его с помощью следующего кода, он работает на устройствах с более низким API Android, чем 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();
}
}
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()
не нужны, так как переопределенные методы пусты в суперклассе.