2013-10-08 6 views
0

Мне нужно, чтобы приложение прослушивало изменения в адресной книге в Android. Я прочитал, что это можно сделать, используя ContentObserver и прослушивание изменений в ContactsContract.Contacts. Кажется, жизненный цикл ContentObserver заканчивается, когда приложение закрыто.Как заставить ContentObserver работать без открытия приложения?

Как создать ContentObserver, даже если приложение не было открыто?

+0

у вас есть какие-либо решения @MikkoP ... –

ответ

0

Как создать ContentObserver, даже если приложение не было открыто?

Это невозможно. Точка за ContentObserver должна быть уведомлена об изменениях, которые могут повлиять на работающее приложение, таких как изменения данных, которые необходимо отразить в активности, показывающей эти данные. Если ваше приложение не запущено, у вас не может быть ContentObserver.

+0

Какие еще варианты у меня есть с точки зрения прослушивания изменений в Addressbook? – MikkoP

+0

@MikkoP: В идеале вы перестаете слушать изменения в реальном времени во всех «адресных книгах» и решать свою проблему каким-то другим способом. Вы можете использовать такие вещи, как услуги переднего плана, чтобы попытаться сохранить приложение в памяти, и ваши пользователи могут принудительно остановить или удалить ваше приложение и дать вам неприятные комментарии в Play Маркете в ответ. – CommonsWare

+0

Я не уверен в вас, но я думаю, что адресная книга является довольно известным термином, говоря о базе данных, содержащей все контакты пользователя. Считаете ли вы, что лучше настроить кнопку в приложении для обновления контактов после внесения изменений? Я этого не делаю, и я не думаю, что пользователь даже запомнил бы это. И учитывая, что я единственный пользователь, я в этом уверен.) – MikkoP

0

зарегистрируйте свое содержимое Observer в OnStartCommand с помощью return START_STICKY;, а не зарегистрируйте его в onCreate. Меня устраивает.

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    getContentResolver().registerContentObserver(uri,true, new SMSObserver(new Handler(), getBaseContext())); 
    return START_STICKY;  
} 
Смежные вопросы