2013-03-14 2 views
0

У меня есть активность для обновления таблицы, содержащей данные конфигурации для службы. Я использую SimpleCursorLoader и SupportLoaderManager для обновления списка в этой Activity. Я уничтожаю загрузчик в разделе «Активность». Это может быть не актуально, так как проблема, которую я вижу, происходит даже без посещения этой операции.Поиск вызывающего объекта ContentResolver.notifyChange

У меня также есть служба, которая регистрирует ContentObserver в URI в таблице, которая была изменена в вышеприведенной Деятельности. Он считывает свою конфигурацию, устанавливает себя и регистрирует ContentObserver в этой таблице в onCreate службы. В службе onDestroy этот слушатель не зарегистрирован.

Это только 1 из нескольких баз данных/таблиц, которые у меня есть в моей системе. Я вижу, что когда я делаю обновление для совершенно другой таблицы, ContentObserver в этом URI конфигурации запускается. Власти совершенно разные, они взаимодействуют с различными базами данных SqlLite, они даже работают в разных процессах в приложении. Я удалил все вызовы «notifyChange», которые я смог найти, которые будут запускать ContentObservers, но они все еще увольняются.

Мой вопрос в том, есть ли способ узнать, кто вызывает notifyChange, из-за которого загорается ContentObserver? Имеет ли система вне моего приложения какие-либо основания уведомлять наблюдателей о URI? Я пытаюсь отследить его, но без подсказки, откуда приходит уведомление, я бегу в стену.

ответ

0

Снова, всего в нескольких часах езды от ответа. Я, видимо, не нашел все вызовы notifyChange в моем коде. Претендентом был:

getContentResolver.notifyChange(new Uri.Builder().build(), null); 

, который звонил, уведомляющий о пустом Uri. Как видно, в документации это не отмечено, но я заметил, что это вызвало запуск всех зарегистрированных ContentObservers в моем приложении. Я получил эту линию оттуда, и теперь все уведомляет, как должно.

Ответ на мой первоначальный вопрос: «Есть ли способ узнать, кто вызвал notifyChange на Uri ?,» Я думаю, что ответ «Посмотрите сложнее для звонков в NotifyChange в вашем коде. Кроме этого, снова по своему усмотрению ».

Смежные вопросы