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

搬瓦工VPS:新增荷兰机房“联通”线路的VPS,10Gbps带宽,可在美国cn2gia、日本软银、荷兰“联通”之间随意切换

搬瓦工今天正式对外开卖荷兰阿姆斯特丹机房走联通AS9929高端线路的VPS,官方标注为“NL - China Unicom Amsterdam(ENUL_9)”,三网都走联通高端网络,即使是在欧洲,国内访问也就是飞快。搬瓦工的依旧是10Gbps带宽,可以在美国cn2 gia、日本软银与荷兰AS9929之间免费切换。官方网站:https://bwh81.net优惠码:BWH3HYATVBJW,节约6...

美国VPS 美国高防VPS 香港VPS 日本VPS 首月9元 百纵科技

百纵科技湖南百纵科技有限公司是一家具有ISP ICP 电信增值许可证的正规公司,多年不断转型探索现已颇具规模,公司成立于2009年 通过多年经营积累目前已独具一格,公司主要经营香港服务器,香港站群服务器,美国高防服务器,美国站群服务器,云服务器,母机租用托管!美国CN2云服务器,美国VPS,美国高防云主机,美国独立服务器,美国站群服务器,美国母机。美国原生IP支持大批量订货 合作 适用电商 亚马逊...

华为云年中聚惠618活动,新用户专区,云服务器低至88元/年,3年仅580.98元,热销抢购中,最后2天!

华为云怎么样?华为云用在线的方式将华为30多年在ICT基础设施领域的技术积累和产品解决方案开放给客户,致力于提供稳定可靠、安全可信、可持续创新的云服务,做智能世界的“黑土地”,推进实现“用得起、用得好、用得放心”的普惠AI。华为云作为底座,为华为全栈全场景AI战略提供强大的算力平台和更易用的开发平台。本次年终聚惠618活动相当给力,1核2G内存1m云耀云服务器仅88元/年起,送主机安全基础版套餐,...

registerreceiver为你推荐
weakhashmapMap接口,HashMap和HashTable的相同点和不同点分别是什么?weakhashmap在Java中ArrayList、LinkedList、HashMap的区别是什么foxmail邮箱注册FOXMAIL邮箱在哪里可以注册?网关和路由器的区别网关和路由器有什么区别备忘录模式Java中常用的设计模式有哪些?请详细说明一下工厂模式。jqlJQL JINQILIN注册过商标吗?还有哪些分类可以注册?inode智能客户端我的电脑上inode智能客户端连接网络时,提示~服务器没有响应,请确认当前认证网卡已连接到合适的网faq是什么意思在国际贸易中“FAQ”代表的是什么意思弹幕网站视频弹幕网站推荐什么是句柄按键精灵的句柄是什么?
海外域名注册 北京vps主机 免费cn域名 oneasiahost wavecom parseerror lighttpd 秒杀汇 域名接入 免费测手机号 web服务器安全 linode支付宝 ebay注册 免费asp空间 谷歌台湾 iki atom处理器 阿里云个人邮箱 美国主机侦探 windowsserver2008 更多