当前位置: 代码迷 >> Android >> 怎么在应用程序后台运行时监听系统广播
  详细解决方案

怎么在应用程序后台运行时监听系统广播

热度:21   发布时间:2016-05-01 09:55:11.0
如何在应用程序后台运行时监听系统广播
一般情况下Broadcast Receiver都是在onResume的时候注册,在onPause的时候注销。如果想要在程序转到后台运行时(此时Activity已经onStop)监听系统广播,如网络连接状态,应该怎么办?现在遇到的问题是,只要在后台运行时遇到监听的广播,很容易出现ANR。大家知道该怎么办吗?还是不应该在这个时候进行监听?又或者应该换一种处理方法?请大家指导一下,谢谢
Broadcast?Receiver ANR

------解决方案--------------------
一般可以在onDestroy()里注销广播,或者使用service,ANR估计不是接收广播的事情 ,应该是接收到之后对UI线程的操作时间过长
------解决方案--------------------
你说的ANR 应该不是有注册或者注销 broadcast receiver 而是由于 坚挺后的动作吧
------解决方案--------------------
注册广播的方式有两种,你可以使用第二种,即在AndroidManifest.xml中注册

<receiver android:name=".ServiceBroadcastReceiver" >
              <intent-filter>
                  <action android:name="android.intent.action.BOOT_COMPLETED"/>
              </intent-filter>
        </receiver>

然后实现ServiceBroadcastReceiver,收到该广播,做你想做的事情。这个是在整个程序的生命周期均存在,你程序退出了都可以继续接收的
  相关解决方案