Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.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
Android Can';不要注销ContentObserver_Android_Sms_Contentobserver - Fatal编程技术网

Android Can';不要注销ContentObserver

Android Can';不要注销ContentObserver,android,sms,contentobserver,Android,Sms,Contentobserver,这是我在服务中使用的代码: 服务启动并运行以下代码: SmsObserver smsSentObserver = new SmsObserver(new Handler(), this); this.getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, smsSentObserver); SmsObserver smsSentObserver

这是我在服务中使用的代码:

  • 服务启动并运行以下代码:

      SmsObserver smsSentObserver = new SmsObserver(new Handler(), this);
      this.getContentResolver().registerContentObserver(Uri.parse("content://sms"), true,            
      smsSentObserver); 
    
          SmsObserver smsSentObserver = new SmsObserver(new Handler(), this);
          this.getContentResolver().unregisterContentObserver(smsSentObserver);
    
  • 然后服务停止self()

    2.服务启动并运行此代码:

      SmsObserver smsSentObserver = new SmsObserver(new Handler(), this);
      this.getContentResolver().registerContentObserver(Uri.parse("content://sms"), true,            
      smsSentObserver); 
    
          SmsObserver smsSentObserver = new SmsObserver(new Handler(), this);
          this.getContentResolver().unregisterContentObserver(smsSentObserver);
    
    然后服务停止self()

    问题:ContentObserver未注销&保留以接收onChange方法

    附加信息:以前一切正常,这与KitKat有关,或者这里出了什么问题


    感谢你为你的观察者创建了一个不同的对象,这可能就是它给你带来麻烦的原因

    在服务中保留对
    SmsObserver
    的引用,并使用该变量调用
    unregisterContentObserver


    这应该可以解决您的问题

    谢谢您的回答,我也在想这个问题,但问题是我无法保持服务运行,因为这些方法可以随时调用,还有其他方法吗?好的,从您的回答中得到启发,我找到了一个解决方案:我将创建一个持久服务并将注销代码放入onDestroy()中方法,因此每次停止服务时,ContentObserver都会被注销,但该服务带有标志Start\u Sticky以使其持久化即使使用此方法,ContentObserver仍不会被注销,我不明白为什么,我在考虑一个特定于Rom的问题,但我不确定,因为其他人已经测试过了&同样的错误也发生了-使用适用于Galaxy S4I的Rom Google Play Edition Android 4.4.4,我的SGS4默认Rom与4.4.2有类似之处,它工作正常:奇怪。。。我希望我是唯一一个有这个问题的人,或者我希望这与安卓4.4.4无关。。。