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

BlueHost主机商年中618活动全场低至五折

BlueHost 主机商在以前做外贸网站的时候还是经常会用到的,想必那时候有做外贸网站或者是选择海外主机的时候还是较多会用BlueHost主机商的。只不过这些年云服务器流行且性价比较高,于是大家可选择商家变多,但是BlueHost在外贸主机用户群中可选的还是比较多的。这次年中618活动大促来袭,毕竟BLUEHOST商家目前中文公司设立在上海,等后面有机会也过去看看。他们也会根据我们的国内年中促销发...

博鳌云¥799/月,香港110Mbps(含10M CN2)大带宽独立服务器/E3/8G内存/240G/500G SSD或1T HDD

博鳌云是一家以海外互联网基础业务为主的高新技术企业,运营全球高品质数据中心业务。自2008年开始为用户提供服务,距今11年,在国人商家中来说非常老牌。致力于为中国用户提供域名注册(国外接口)、免费虚拟主机、香港虚拟主机、VPS云主机和香港、台湾、马来西亚等地服务器租用服务,各类网络应用解決方案等领域的专业网络数据服务。商家支持支付宝、微信、银行转账等付款方式。目前香港有一款特价独立服务器正在促销,...

CloudCone2核KVM美国洛杉矶MC机房机房2.89美元/月,美国洛杉矶MC机房KVM虚拟架构2核1.5G内存1Gbps带宽,国外便宜美国VPS七月特价优惠

近日CloudCone发布了七月的特价便宜优惠VPS云服务器产品,KVM虚拟架构,性价比最高的为2核心1.5G内存1Gbps带宽5TB月流量,2.89美元/月,稳定性还是非常不错的,有需要国外便宜VPS云服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2017年的美国服务器提供商,国外实力大厂,自己开...

registerreceiver为你推荐
weakhashmapMap接口,HashMap和HashTable的相同点和不同点分别是什么?foxmail邮箱注册如何注册一个foxmail邮箱电子日历我想做个项目 如何在电子日历中进行时间的选择arc是什么意思数学中的arctan是什么意思索引超出了数组界限求助大神什么叫索引超出了数组界限inode智能客户端iNode 智能客户端windows7上网方法flowplayerswfobject.js这能不能播放音频啊(amr)radius认证如何写一个C#的Radius认证客户端问卷星登陆问卷星的使用步骤mediasres什么意思
买域名 最便宜虚拟主机 台湾服务器 流媒体服务器 香港机房托管 密码泄露 青果网 typecho 警告本网站 云图标 中国特价网 京东商城双十一活动 193邮箱 ftp教程 合租空间 谁的qq空间最好看 admit的用法 100m空间 vip购优惠 河南移动m值兑换 更多