Pro Android学习笔记(九九):BroadcastReceiver(3):长时间运行Receiver的问题
来源:互联网 发布:myeclipse导入java项目 编辑:程序博客网 时间:2024/06/05 15:50
文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处以及作者@恺风Wei-傻瓜与非傻瓜。
如果receiver的运行时间长于10秒,就要注意了。receiver是在主线程中运行的,如果在onReceive()的处理中,用户进行了UI触发,将可能引发ANR异常,不过和activity的时间限制不同,receiver在10秒而非5秒后触发ANR。
由于存在ANR问题,要避免需要另起线程。但是如果进程结束,这个线程也会结束,因此我们需要告诉Android,进程含有具备生命周期的组件Service,由于service也在主线程中,因此具体的处理需要在service中开启worker线程。在这个worker线程中我们需要一个特别的wake lock,防止设备进入休眠,让设备继续执行代码,不要关闭进程。
一般的处理步骤如下:
1、在广播receiver的onReceive()中获取static的wake lock,静态是为了在广播接收器和service之间通信。因为service没有什么其他法将一个wake lock对象传递到service中。
2、开启local service使得进程不被终结。
3、在service中开启一个worker线程来进行处理。
4、当worker线程处理完,要通知service结束,可以直接stop(),或者通过Handler在主线程中结束service。
5、service要关闭静态的wake lock。
相关链接: 我的Android开发相关文章
0 0
- Pro Android学习笔记(九九):BroadcastReceiver(3):长时间运行Receiver的问题
- Pro Android学习笔记(一零一):BroadcastReceiver(5):长时间处理通知小例子(上)
- Pro Android学习笔记(一零二):BroadcastReceiver(6):长时间处理通知小例子(下)
- Pro Android学习笔记(九六):AsyncTask(5):横竖屏切换问题
- Pro Android学习笔记(七九):服务(4):远程服务的实现
- Pro Android学习笔记(五九):Preferences(3):EditText和Ringtone Preference
- Pro Android学习笔记(六九):HTTP服务(3):HTTP POST MultiPart
- Pro Android学习笔记(九四):AsyncTask(3):ProgressDialog
- Android学习笔记(九)
- Pro Android学习笔记(九八):BroadcastReceiver(2):notification
- Pro Android学习笔记(一零零):BroadcastReceiver(4):IntentService
- Pro Android学习笔记(九):了解Content Provider(下下)
- Pro Android学习笔记(二九):用户界面和控制(17):include和merge
- Pro Android学习笔记(四九):ActionBar(2):Action图标区
- Pro Android学习笔记(九一):了解Handler(5):组件生命
- Pro Android学习笔记(九二):AsyncTask(1):AsyncTask类
- Pro Android学习笔记(九三):AsyncTask(2):小例子
- Pro Android学习笔记(一一九):Telephony API(1):发送短信
- Python中setuptools的简介
- dm8168的DSP和ARM添加库与调用
- android -- FileObserver 类用法及限制
- [Android]Android SystemUI的问题
- javascript模块化编程及AMD规范
- Pro Android学习笔记(九九):BroadcastReceiver(3):长时间运行Receiver的问题
- mongodb---js脚本操作速记
- 报错:1130-host ... is not allowed to connect to this MySql server
- 11G R2 RAC监听管理---修改端口
- DataSet excel导出(winform)
- RS232接口器件
- Null value was assigned to a property of primitive type setter of
- java project整合spring和hibernate
- 面试题