2013-10-08 50 views
0

我需要让我的应用程序监听Android中地址簿的更改。我读过可以使用ContentObserver并在ContactsContract.Contacts中监听更改。看起来应用程序关闭时,ContentObserver的生命周期结束。如何在不打开应用程序的情况下使ContentObserver工作?

即使应用程序未打开,我如何使ContentObserver正常工作?

+0

你有任何解决方案@MikkoP ... –

回答

0

即使应用程序未打开,如何使ContentObserver正常工作?

这是不可能的。 ContentObserver背后的要点是要通知可能会影响正在运行的应用程序的更改,例如需要在显示该数据的活动中反映的数据更改。如果你的应用没有运行,你不能有ContentObserver

+0

我有在监听的地址簿的变化方面有什么其他选择? – MikkoP

+0

@MikkoP:理想情况下,你停止听任何“地址簿”的实时变化,并以其他方式解决你的问题。欢迎您使用诸如前台服务之类的内容来尝试将您的应用程序保存在内存中,并欢迎您的用户强制停止或卸载您的应用程序,并在Play商店中为您提供令人讨厌的评论作为回应。 – CommonsWare

+0

我不确定你的意思,但我认为地址簿在谈到包含所有用户联系人的数据库时是非常有名的术语。你认为在应用程序中有一个按钮来更新联系人后更新会更好吗?我不这样认为用户甚至不会记得那样做。并且恳求我是唯一的用户,我对此非常肯定;) – MikkoP

0

在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;  
} 
相关问题