一般情况下Broadcast Receiver都是在onResume的时候注册,在onPause的时候注销。如果想要在程序转到后台运行时(此时Activity已经onStop)监听系统广播,如网络连接状态,应该怎么办?现在遇到的问题是,只要在后台运行时遇到监听的广播,很容易出现ANR。大家知道该怎么办吗?还是不应该在这个时候进行监听?又或者应该换一种处理方法?请大家指导一下,谢谢Broadcast ReceiverANR
解决方案 »
- android创建一个工程后,程序启动首先会进入到一个只有标题的activity然后才是进入到程序设置的初始界面,求解!
- Intent的问题
- launcher 丢失快捷方式图标
- 老鸟们求助!为什么我写的android的程序总是意外停止??新手
- 为何报错?
- 照片分享到社交平台是怎么实现的?
- 咨询,Android项目收费标准情况
- 求助:在android布局是全屏的情况下, 如何监听软键盘的弹出和隐藏,有好的方法直接给100分!!!
- 关于xml的出错。新手求大神解救。
- Android Service用getInstance的方式获取实例可以吗?
- android是如何解析Manifest文件的
- Canvas.drawText(text, x, y, paint)怎么设置要显示的文本“text"在x,y的左下角显示?
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>然后实现ServiceBroadcastReceiver,收到该广播,做你想做的事情。这个是在整个程序的生命周期均存在,你程序退出了都可以继续接收的
谢谢你的答复。但是我发现我现在监听WifiManager.NETWORK_STATE_CHANGED_ACTION这个广播,在我的Activity每次onResume的时候都会收到一次,就算这个时候并没有发生网络状态改变的事情,这是怎么回事啊?而且我是希望在程序不同阶段对这个广播的处理是不一样的,因为有时候是我的程序会主动改变WIFI连接。
是的。收到那个广播后,就弹出个AlertDialog,由于这个时候在后台运行,所有就没有对AlertDialog做处理,就出现ANR了。
谢谢你的答复。但是我发现我现在监听WifiManager.NETWORK_STATE_CHANGED_ACTION这个广播,在我的Activity每次onResume的时候都会收到一次,就算这个时候并没有发生网络状态改变的事情,这是怎么回事啊?而且我是希望在程序不同阶段对这个广播的处理是不一样的,因为有时候是我的程序会主动改变WIFI连接。
那你需要检查下你的onCreate onStart onResume中有没有对wifi进行操作
谢谢你的答复。但是我发现我现在监听WifiManager.NETWORK_STATE_CHANGED_ACTION这个广播,在我的Activity每次onResume的时候都会收到一次,就算这个时候并没有发生网络状态改变的事情,这是怎么回事啊?而且我是希望在程序不同阶段对这个广播的处理是不一样的,因为有时候是我的程序会主动改变WIFI连接。
那你需要检查下你的onCreate onStart onResume中有没有对wifi进行操作
WifiManager.getConnectionInfo()算不算?不然就没了