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

恒创新客(317元)香港云服务器 2M带宽 三网CN2线路直连

恒创科技也有暑期的活动,其中香港服务器也有一定折扣,当然是针对新用户的,如果我们还没有注册过或者可以有办法注册到新用户的,可以买他们家的香港服务器活动价格,2M带宽香港云服务器317元。对于一般用途还是够用的。 活动链接:恒创暑期活动爆款活动均是针对新用户的。1、云服务器仅限首次购买恒创科技产品的新用户。1 核 1G 实例规格,单个账户限购 1台;其他活动机型,单个账户限购 3 台(必须在一个订单...

CloudCone:KVM月付1.99美元起,洛杉矶机房,支持PayPal/支付宝

CloudCone的[2021 Flash Sale]活动仍在继续,针对独立服务器、VPS或者Hosted email,其中VPS主机基于KVM架构,最低每月1.99美元,支持7天退款到账户,可使用PayPal或者支付宝付款,先充值后下单的方式。这是一家成立于2017年的国外VPS主机商,提供独立服务器租用和VPS主机,其中VPS基于KVM架构,多个不同系列,也经常提供一些促销套餐,数据中心在洛杉...

10gbiz首月半价月付2.36美元,香港/洛杉矶VPS、硅谷独立服务器/站群服务器

收到10gbiz发来的7月份优惠方案,中国香港、美国洛杉矶机房VPS主机4折优惠码,优惠后洛杉矶VPS月付2.36美元起,香港VPS月付2.75美元起。这是一家2020年成立的主机商,提供的产品包括独立服务器租用和VPS主机等,数据中心在美国洛杉矶、圣何塞和中国香港。商家VPS主机基于KVM架构,支持使用PayPal或者支付宝付款。洛杉矶VPS架构CPU内存硬盘带宽系统价格单核512MB10GB1...

registerreceiver为你推荐
科来网络分析系统如何破解电信星空极速?weakhashmapWeakHashMap和HashMap的区别知识库管理系统知识库管理软件与档案管理软件有什么区别mindmanager破解版求mindmanager 2019 的注册机jdk6jdk-6u14-windows-i586.exe是什么,具体点,谢谢丁奇海贼王里“D”的意思是什么?数秦科技天津数沃科技公司怎么样?待遇和发展如何?有人知道么?问卷星登陆请问问卷星怎么设置答题时间?新手怎么制作表格怎么样在电脑上制作表格初学者中科红旗中科红旗Linux 5.0桌面操作系统与Window系统是否有相近之处?
视频空间租用 查询ip地址 免费二级域名申请 域名备案网站 免费申请网页 香港服务器99idc linode代购 宕机监控 账号泄露 英文简历模板word http500内部服务器错误 xfce 服务器怎么绑定域名 卡巴斯基官方免费版 699美元 vip购优惠 能外链的相册 支持外链的相册 根服务器 中国域名 更多