说说如何使用 Android 的本地广播
发布日期:2021-06-29 21:10:00
浏览次数:2
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月05日 00时43分44秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
分布式系统:GFS
2019-04-30
分布式系统:Primary Backup - 故障容忍的虚拟机
2019-04-30
分布式系统:raft
2019-04-30
分布式系统:Raft(实验作业2A)
2019-04-30
分布式系统:Raft(实验作业2B)
2019-04-30
分布式系统:Raft(实验作业2C)
2019-04-30
一微秒的差别
2019-04-30
分布式系统:Raft(实验作业3A)
2019-04-30
分布式系统 Spinnaker
2019-04-30
分布式系统 Lab3B KVRaft snapshot
2019-04-30
分布式系统 Zookeeper
2019-04-30
分布式系统:Lec 10 分布式事务
2019-04-30
分布式系统:FaRM
2019-04-30
分布式系统:ZooKeeper 基本用例
2019-04-30
分布式系统:Spark
2019-04-30
分布式系统:Naiad
2019-04-30
分布式系统:参数服务器
2019-04-30
分布式系统:FastRPC eRPC
2019-04-30
奇异值分解简要笔记
2019-04-30
6.824(2020年) Lab1 MapReduce
2019-04-30