broadcast相关
onreceiver中执行耗时操作 不要在onreceiver中执行耗时操作,也不要开启新线程开执行这个操作,在broadcast中的代码执行位于其进程的主线程中,执行时间不要超过5s,否则会弹出超市dialog。但是如果执行不完,也不能放在线程中,Receiver只在onReceiver方法执行时是激活状态。因为开启线程——>onReceiver返回——>receiver不再处于激活状态——>receiver进程变为空进程将会在任意时刻被终止——>正在工作的子线程也会被杀死 解决这个问题的方案是在onReceive()里开始一个Service,让这个Service去 做这件事情,那么系统就会认为这个进程里还有活动正在进行。 执行优先级 冷注册(权限文件)和热注册(代码中跟随activity生命周期) 对于有序消息,热注册的BroadcastReceiver总是先于冷注册的BroadcastReceiver被触发。对于同样是动态注册的BroadcastReceiver,优先级别高(android:priority)的将先被触发,而静态注册的 BroadcastReceiver总是按照冷注册的顺序执行。 与其他app的干扰: 任何应用都可以向该registered receiver发送广播 (1)可以通过对广播添加权限来控制。 a. 定义新权限: b....
2018, May 30 — 1 minute read