博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
广播接收者BroadcastReceiver浅谈
阅读量:5862 次
发布时间:2019-06-19

本文共 785 字,大约阅读时间需要 2 分钟。

hot3.png

BroadcastReceiver在10秒内没有执行完毕,Android会认为该程序无响应。所以在BroadcastReceiver里不能做一些比较耗时的操作,否则会弹出ANR的对话框。如果需要完成一项比较耗时的工作,应该通过发送Intent给Service,由Service来完成。而不是使用子线程的方法来解决,因为BroadcastRecevicer的生命周期很短(在onReceive()执行后BroadcastReceiver的实例就会被销毁),子线程可能还没有结束BroadcastReceiver就先结束了。如果BroadcastReceiver结束了,它的宿主进程还在运行,那么子线程还会继续执行。但宿主进程此时很容易在系统需要内存时被优先杀死,因为它属于空进程(没有任何活动组件的进程)。

注册广播的两种方法如下:(以android.provider.Telephony.SMS_RECEIVED为例)。

1、 IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
      BRSMSReceiver receiver = new BRSMSReceiver();
      registerReceiver(receiver, filter);

2、 <receiver

            android:name=".BRSMSReceiver">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
       </receiver>

转载于:https://my.oschina.net/zhangjie830621/blog/95243

你可能感兴趣的文章
Making Your ActionBar Not Boring
查看>>
iOS:详解MJRefresh刷新加载更多数据的第三方库
查看>>
window系统上用PHP获取本地物理IP代码
查看>>
JavaScript - 倒计时
查看>>
springmvc与struts2的主要区别
查看>>
原型模式
查看>>
Consumer group理解深入
查看>>
Android笔记之 网络http通信
查看>>
FancyTree 状态保持
查看>>
javaScript操作符
查看>>
UILabel模糊查找符合的字符串并且高亮
查看>>
用 Electron 和 React 撸了个功能超全 + 颜值极高的音乐客户端
查看>>
Linux安装Kafka
查看>>
说说极光推送那些事
查看>>
抽象工厂模式 —— Python 描述
查看>>
使用免费SSL证书让网站支持HTTPS访问
查看>>
Object From runtime
查看>>
PostgreSQL数据库从入门到精通
查看>>
Android Architecture Components 之 Room 篇
查看>>
Android 布局巧用之include、merge、ViewStub
查看>>