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

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

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

麻花云:3折优惠,香港CN2安徽麻花云香港安徽移动BGP云服务器(大带宽)

麻花云在7月特意为主机测评用户群定制了促销活动:香港宽频CN2云服务器、安徽移动云服务器(BGP网络,非单线,效果更好)、安徽移动独立服务器、安徽电信独立服务器,全部不限制流量,自带一个IPv4,默认5Gbps的DDoS防御。活动链接:https://www.mhyun.net/act/zjcp特价云服务器不限流量,自带一个IPv4,5Gbps防御香港宽频CN2全固态Ⅲ型 4核4G【KVM】内存:...

RFCHOST - 洛杉矶CN2 GIA VPS季付23.9美元起 100Mbps带宽

RFCHOST,这个服务商我们可能有一些朋友知道的。不要看官网是英文就以为是老外服务商,实际上这个服务商公司在上海。我们实际上看到的很多商家,有的是繁体,有的是英文,实际上很多都是我们国人朋友做的,有的甚至还做好几个品牌域名,实际上都是一个公司。对于RFCHOST商家还是第一次分享他们家的信息,公司成立大约2015年左右。目前RFCHOST洛杉矶机房VPS正进行优惠促销,采用CN2优化线路,电信双...

registerreceiver为你推荐
g2g电子商务中的g2g模式代表showwindowvb ShowWindow 的使用方法 隐藏/显示 指定窗口 (完整代码)谢谢索引超出了数组界限索引超出了数组界限数秦科技安徽数智通科技有限公司怎么样?民生电商民生电商与传统的电商有什么区别?faq是什么意思fans是什么意思?弹幕网站A站B站网址是什么,国内很出名嗎?有什么网站特点..弹幕网站求弹幕网邀请码!layoutsubviews如何让NSSplitView的子View的大小固定easeljswindow.webkit.messagehandlers js中这句是什么意思
大连虚拟主机 景安vps 最新代理服务器地址 金万维动态域名 cn域名个人注册 日志分析软件 服务器架设 湖南服务器托管 qingyun 架设服务器 hkt 台湾谷歌 网游服务器 购买国外空间 厦门电信 lamp的音标 七牛云存储 博客域名 石家庄服务器 cx域名 更多