registerreceiver注册广播有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意

registerreceiver  时间:2021-07-16  阅读:()

电子尺上的RRDIUS什么意思?

RRD abbr. receive, record, display 接收; read receive data register 读接收数据寄存器; receiver register disable 接收机寄存器禁止; Reliability Requirements Directive 可靠性要求指令;

写一个service只用来注册一个intent好吗?

这个是一定要被活动注册,而且除了service没有什么其他的办法能够确保你每次都接收到这个事件,只有service是可以一直运行的,而且要用 startForeground()来阻止它被Kill掉

注册广播有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意

在android下,要想接受广播信息,那么这个广播接收器就得我们自己来实现了,我们可以继承BroadcastReceiver,就可以有一个广播接受器了。

有个接受器还不够,我们还得重写BroadcastReceiver里面的onReceiver方法,当来广播的时候我们要干什么,这就要我们自己来实现,不过我们可以搞一个信息防火墙。

具体的代码: 源码打印?

  1. lassSmsBroadCastReceiverextendsBroadcastReceiver
  2. {
  3. @Override
  4. publicvoidonReceive(Contextcontext,Intentintent)
  5. {
  6. Bundlebundle=intent.getExtras();
  7. Object[]object=(Object[])bundle.get("pdus");
  8. SmsMessagesms[]=newSmsMessage[object.length];
  9. for(inti=0;i<object.length;i++)
  10. {
  11. sms[0]=SmsMessage.createFromPdu((byte[])object[i]);
  12. Toast.makeText(context,"来自"+sms[i].getDisplayOriginatingAddress()+"的消息是:"+sms[i].getDisplayMessageBody(),Toast.LENGTH_SHORT).show();
  13. }
  14. //终止广播,在这里我们可以稍微处理,根据用户输入的号码可以实现短信防火墙。

  15. abortBroadcast();
  16. }
  17. }

当实现了广播接收器,还要设置广播接收器接收广播信息的类型,这里是信息:android.provider.Telephony.SMS_RECEIVED

我们就可以把广播接收器注册到系统里面,可以让系统知道我们有个广播接收器。

这里有两种,一种是代码动态注册:

//生成广播处理 smsBroadCastReceiver = new SmsBroadCastReceiver(); //实例化过滤器并设置要过滤的广播

IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");

//注册广播 BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver, intentFilter); 一种是在AndroidManifest.xml中配置广播 源码打印?

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:android="/apk/res/android"
  3. package="spl.broadCastReceiver"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
  7. <activityandroid:name=".BroadCastReceiverActivity"
  8. android:label="@string/app_name">
  9. <intent-filter>
  10. <actionandroid:name="android.intent.action.MAIN"/>
  11. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  12. </intent-filter>
  13. </activity>
  14. <!--广播注册-->
  15. <receiverandroid:name=".SmsBroadCastReceiver">
  16. <intent-filterandroid:priority="20">
  17. <actionandroid:name="android.provider.Telephony.SMS_RECEIVED"/>
  18. </intent-filter>
  19. </receiver>
  20. </application>
  21. <uses-sdkandroid:minSdkVersion="7"/>
  22. <!--权限申请-->
  23. <uses-permissionandroid:name="android.permission.RECEIVE_SMS"></uses-permission>
  24. </manifest>

两种注册类型的区别是:

1)第一种不是常驻型广播,也就是说广播跟随程序的生命周期。

2)第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

天上云月付572元,起香港三网CN2直连,独立服务器88折优惠,香港沙田机房

天上云怎么样?天上云隶属于成都天上云网络科技有限公司,是一家提供云服务器及物理服务器的国人商家,目前商家针对香港物理机在做优惠促销,香港沙田机房采用三网直连,其中电信走CN2,带宽为50Mbps,不限制流量,商家提供IPMI,可以自行管理,随意安装系统,目前E3-1225/16G的套餐低至572元每月,有做大规模业务的朋友可以看看。点击进入:天上云官方网站天上云香港物理机服务器套餐:香港沙田数据中...

DMIT(季度$28.88)调整洛杉矶CN2 GIA优化端口

对于DMIT商家已经关注有一些时候,看到不少的隔壁朋友们都有分享到,但是这篇还是我第一次分享这个服务商。根据看介绍,DMIT是一家成立于2017年的美国商家,据说是由几位留美学生创立的,数据中心位于香港、伯力G-Core和洛杉矶,主打香港CN2直连云服务器、美国CN2直连云服务器产品。最近看到DMIT商家有对洛杉矶CN2 GIA VPS端口进行了升级,不过价格没有变化,依然是季付28.88美元起。...

PhotonVPS:美国Linux VPS半价促销2.5美元/月起,可选美国洛杉矶/达拉斯/芝加哥/阿什本等四机房

photonvps怎么样?photonvps现在针对旗下美国vps推出半价促销优惠活动,2.5美元/月起,免费10Gbps DDoS防御,Linux系统,机房可选美国洛杉矶、达拉斯、芝加哥、阿什本。以前觉得老牌商家PhotonVPS贵的朋友可以先入手一个月PhotonVPS美国Linux VPS试试了。PhotonVPS允许合法大人内容,支持支付宝、paypal和信用卡,30天退款保证。Photo...

registerreceiver为你推荐
firstname中国人填资料时,first name是名还是姓?scanf_sscanf_s和以前的scanf是一样等级的吗???weakhashmapMap接口,HashMap和HashTable的相同点和不同点分别是什么?oracle索引如何在ORACLE数据库的字段上建立索引拓扑关系简述空间数据的拓扑关系及其对GIS数据处理和空间分析有何重要意义?tvosairpods什么意思 airpods连接方式是怎样的调度系统生产调度系统网页微信客户端手机微信客户端怎么打开网页数秦科技浙江数链科技有限公司怎么样?faq是什么意思fans是什么意思?
空间域名 域名是什么 域名主机基地 主机评测 lunarpages 主机点评 namecheap 2014年感恩节 香港托管 表格样式 香港新世界电讯 in域名 河南移动梦网 net空间 学生服务器 免费个人网页 学生机 windowsserver2008r2 phpwind论坛 此网页包含的内容将不使用安全的https 更多