Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使ContentObserver在不打开应用程序的情况下工作?_Java_Android_Addressbook_Contentobserver - Fatal编程技术网

Java 如何使ContentObserver在不打开应用程序的情况下工作?

Java 如何使ContentObserver在不打开应用程序的情况下工作?,java,android,addressbook,contentobserver,Java,Android,Addressbook,Contentobserver,我需要让我的应用程序在Android中监听地址簿中的更改。我已经读到,可以使用ContentObserver并监听Contacts contract.Contacts中的更改来完成此操作。当应用程序关闭时,ContentObserver的生命周期似乎结束了 即使应用程序未打开,如何使ContentObserver工作 即使应用程序未打开,如何使ContentObserver工作 这是不可能的。ContentObserver背后的要点是通知可能影响正在运行的应用程序的更改,例如需要在显示该数据的活

我需要让我的应用程序在Android中监听地址簿中的更改。我已经读到,可以使用
ContentObserver
并监听
Contacts contract.Contacts
中的更改来完成此操作。当应用程序关闭时,ContentObserver的生命周期似乎结束了

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

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


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

使用
返回开始\u>在onstart命令中注册您的内容观察者而不是在onCreate中注册它。它对我有用

@Override  
public int onStartCommand(Intent intent, int flags, int startId) {  
    getContentResolver().registerContentObserver(uri,true, new SMSObserver(new Handler(), getBaseContext())); 
    return START_STICKY;    
} 

在监听通讯录中的更改方面,我还有什么其他选择?@MikkoP:理想情况下,你停止监听任何“通讯录”中的实时更改,并以其他方式解决你的问题。欢迎您使用前台服务之类的工具尝试将您的应用程序保留在内存中,并欢迎您的用户随后强制停止或卸载您的应用程序,并在Play Store上对您发表恶意评论作为回应。我不确定您的情况,但我认为,当谈到包含所有用户联系人的数据库时,地址簿是一个相当广为人知的术语。您认为在应用程序中设置一个按钮以便在更改后刷新联系人是否更好?我不知道,我也不认为用户会记得这么做。考虑到我是唯一的用户,对此我非常肯定;)你有什么解决办法吗@MikkoP。。。