说说如何使用 Android 的本地广播
发布日期:2021-06-29 21:10:00
浏览次数:3
分类:技术文章
本文共 1981 字,大约阅读时间需要 6 分钟。
Android 的全局广播存在安全性方面的问题。比如发送一些关键性的数据广播有可能会被其他的应用程序所捕获,或者不断收到其他程序所发送的各种垃圾广播等。
本地广播就是为了解决这一方面的安全性问题,它只能够在应用程序的内部进行传递,并且广播接收器也只能接收来自本应用程序发出的广播。
本地广播使用了 LocalBroadcastManager 来对广播进行管理,并提供了发送广播和注册广播接收器的方法。
在 项目的基础上,修改 MainActivity:
public class MainActivity extends AppCompatActivity { private LocalReceiver localReceiver = new LocalReceiver(); private LocalBroadcastManager localBroadcastManager = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); localBroadcastManager = LocalBroadcastManager.getInstance(this); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {// sendBroadcast(new Intent("net.deniro.android.MY_BROADCAST"));// sendOrderedBroadcast((new Intent("net.deniro.android.MY_BROADCAST")),null); //发送本地广播 localBroadcastManager.sendBroadcast(new Intent("net.deniro.android.MY_BROADCAST")); } }); //注册本地广播 IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("net.deniro.android.MY_BROADCAST"); localBroadcastManager.registerReceiver(localReceiver, intentFilter); } @Override protected void onDestroy() { super.onDestroy(); localBroadcastManager.unregisterReceiver(localReceiver);//注销本地广播 } /** * 本地广播 */ private class LocalReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "收到本地广播O(∩_∩)O哈哈~", Toast.LENGTH_SHORT).show(); } }}
这里使用了 LocalBroadcastManager 类的实例来发送、注册与注销本地广播。
运行程序:
注意:本地广播是无法通过静态注册的方式来接收的。因为静态注册是为了让程序在未启动的情况下也能接收到广播,而程序如果还未启动,自然也就无法使用本地广播啦O(∩_∩)O
本地广播有这些优势:
* 可以明确知道正在发送的广播不会离开当前程序,自然也就不需要担心数据泄漏的问题。 * 其他程序无法将广播发送到我们程序的内部,所以不能担心安全漏洞。 * 发送本地广播比发送系统全局广播会更加高效。转载地址:https://deniro.blog.csdn.net/article/details/79428619 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月06日 04时14分30秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Database、User、Schema、Tables、Col、Row等之间的关系
2019-04-30
深入剖析oracle备份与恢复原理
2019-04-30
GIS数据库ORACLE的某些参数设置
2019-04-30
多元化控制文件和重做日志文件
2019-04-30
信令网
2019-04-30
1号信令、7号信令和PRI信令
2019-04-30
信令点编码
2019-04-30
E1通信的基础知识
2019-04-30
中继卡与语音卡
2019-04-30
普通固定电话机使用与原理简介
2019-04-30
电脑声卡的工作原理
2019-04-30
PBX
2019-04-30
G.703 V.35接口
2019-04-30
G.703 V.35接口
2019-04-30
协议转换器
2019-04-30
协议转换器与网桥区别
2019-04-30
中继器,集线器,交换机,网桥,网关,路由器的功能作用,区别到底是什么
2019-04-30
SDH(Synchronous Digital Hierarchy,同步数字体系)
2019-04-30
STM-1和SDH是什么关系?SONET与SDH是什么关系?
2019-04-30
载波侦听多路访问(Carrier Sense Multiple Access,CSMA)
2019-04-30