位置: 编程技术 - 正文
推荐整理分享安卓广播(安卓广播的作用),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:安卓广播注册方式,安卓广播发送和接收,安卓广播机制,安卓广播注册方式,安卓广播机制,安卓广播机制,安卓广播接收器,安卓广播接收器,内容如对您有帮助,希望把文章链接给更多的朋友!
转载请注明出处:
广播是一种广泛运用的在应用程序之间传输信息的机制 。而 BroadcastReceiver 是对发送出来的广播进行过滤接收并响应的一类组件;BroadcastReceiver 自身并不实现图形用户界面,但是当它收到某个通知后, BroadcastReceiver 可以启动Activity 作为响应,或者通过 NotificationMananger 提醒用户,或者启动 Service 等等。
broadcastReceiver属性:
android:enabled="true",只有application和自身的这两个属性都为true,才可以被实例化。
android:exported="true",默认依据是否有intent filters,有就为true,没有为false。
android:permissino,使用name属性指定权限
权限在manifesst中使用permission声明。例如:(权限声明部分摘录自: android:description="string resource" android:icon="drawable resource" android:label="string resource" android:name="string" android:permissionGroup="string" android:protectionLevel=["normal" | "dangerous" | "signature" | "signatureOrSystem"] />android:description :对权限的描述,一般是两句话,第一句话描述这个权限所针对的操作,第二句话告诉用户授予app这个权限会带来的后果 android:label: 对权限的一个简短描述 android:name :权限的唯一标识,一般都是使用 报名加权限名 android:permissionGroup: 权限所属权限组的名称 android:protectionLevel: 权限的等级, normal 是最低的等级,声明次权限的app,系统会默认授予次权限,不会提示用户 dangerous 权限对应的操作有安全风险,系统在安装声明此类权限的app时会提示用户 signature 权限表明的操作只针对使用同一个证书签名的app开放 signatureOrSystem 与signature类,只是增加了rom中自带的app的声明 android:name 属性是必须的,其他的可选,未写的系统会指定默认
两种注册方法:
系统注册:
[html] view plaincopyprint?< receiver android:name = ".MyBroadcastReceiver" > < intent-filter android:priority = "" > < action android:name = " android.provider.Telephony.SMS_RECEIVED" /> </ intent-filter > </ receiver >代码注册:
[java] view plaincopyprint?IntentFilter filterB = new IntentFilter(); filterB.addAction("sendMyBroadcastReceiverB"); MyBroadcastReceiverB myBroadcastReceiverB = new MyBroadcastReceiverB(); this.registerReceiver(myBroadcastReceiverB, filterB);andorid broadcast类型:
sendBroadcast:发送普通广播,广播发送后所有接收者以不同的顺序运行,通常在同一时刻。
在有些情况下,例如那些需要创建一个进程的广播,只有一个会被执行避免系统因为创建进程负载。
sendOrderedBroadcast:一次只有一个广播在执行,可以给下一个广播提供一个结果或者终止广播继续传递。可以通过android:priority控制广播的顺序,相同优先级的广播的执行顺序不确定。
sendStickyBroadcast:粘性广播,发出后系统会保留最后一次发送的intnet,在有广播注册后可以立即收到广播,且会一直存在。(退出发送广播的应用也会存在)
1):相同的intent,系统只会保留最后一次
2):不同的intent,可以一起存在。
安全:
1)确保intent actions和其它的条件是唯一的,否则会冲突
2)使用registerReceiver(BroadcastReceiver, IntentFilter),任何其它应用都可以给它发送广播
3)当你在manifest中注册广播,其它任何应用都可以给它发送广播,使用android:exported="false"阻止。
4)sendBroadcast(Intent),任何其它应用都可以收到广播,可以通过权限控制。从ICE_CREAM_SANDWICH开始,可以设置Intent.setPackage发给一个应用。
使用LocalBroadcastManager不会发生上述问题,因为他不会将intent广播出当前进程
可以使用sendBroadcast(Intent, String)或者sendOrderedBroadcast(Intent, String, BroadcastReceiver, android.os.Handler, int, String, Bundle)指定权限,只有那么在manifest中注册了permission的receiver可以收到广播。
广播生命周期:
一个正在执行广播的onRecieve的方法的进程会被认为是前台进程。一旦从onReveieve返回,就和其他运行在进程中的组件优先级相同。
onReceieve方法:
通常运行在UI线程,除非指定registerReceiver(BroadcastReceiver, IntentFilter, String, android.os.Handler)是它运行在其它线程。当广播运行在主线程的时候,不能在onReceieve方法执行超过s的操作。也不能在里面弹出对话框。
应用场景暂略。
android之Java+html+javascript混合开发 android开发,除了使用原生态的开发方式之外,还可以使用java+html+javascript混合开发的方式来开发,这样可以节省大量的开发时间,同时还可以使不同设
Android开发--仿腾讯新闻客户端(1)内容列表界面 好久没有更新博客了。最近由于工作比较忙,再加上忙于社交。导致一直没好好静下来研究Android。这次给大家分享仿腾讯新闻内容列表界面。其实,这
Android之framework修改底部导航栏NavigationBar动态显示和隐藏 大家都知道,Android从3.0版本开始就加入了NavigationBar,主要是为那些没有实体按键的设备提供虚拟按键,但是,它始终固定在底部,占用dp的像素高度
标签: 安卓广播的作用
本文链接地址:https://www.jiuchutong.com/biancheng/376631.html 转载请保留说明!友情链接: 武汉网站建设