本地广播LocalBroadcastManager简单使用
/** * 由于系统的全局广播可以被任何应用程序接收到,并且我们也可以接收来自任何程序的广播 * 这样很容易引起安全问题,因此Google引入的本地广播LocalBroadcastManager */ public class MainActivity extends AppCompatActivity {private Button mBtnSend;private LocalBroadcastManager mLocalBroadcastManager;private MyReceiver myReceiver;@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mBtnSend = (Button) findViewById(R.id.btn_send_broadcast);//1.获取 LocalBroadcastManager实例对象 mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);mBtnSend.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View v) {// 2.使用Intent传递数据给广播接收器 Intent intent = new Intent("我给你发一条广播,注意接收!");//3.发送本地广播 mLocalBroadcastManager.sendBroadcast(intent);}});/** * 接下来就类似于动态注册广播的方式 */ //4.创建IntentFilter对象 IntentFilter intentFilter = new IntentFilter();//5.添加action(也就是广播接收器想要监听什么广播) intentFilter.addAction("我给你发一条广播,注意接收!");//6.创建广播接受器的实例对象 myReceiver = new MyReceiver();//7.注册本地广播监听器 mLocalBroadcastManager.registerReceiver(myReceiver, intentFilter);}@Override protected void onDestroy() {super.onDestroy();//8.在Activity销毁的时候取消注册广播接受器 mLocalBroadcastManager.unregisterReceiver(myReceiver);}/** * 创建广播接收器 */ class MyReceiver extends BroadcastReceiver {//当广播到来的手onReceive方法就会得到执行,具体的逻辑就在这个方法里处理 @Override public void onReceive(Context context, Intent intent) {Toast.makeText(MainActivity.this, "广播接收器接收到广播了!", Toast.LENGTH_SHORT).show();}} }
做一个简单的案例:每次点击按钮的时候发送本地广播,当系统接收到广播后,自动跳转界面
MainActivity:
SecondActivity:
ThirdActivity:
MyBroadcastReceiver(广播接收器):
public class MyBroadcastReceiver extends BroadcastReceiver {@Override public void onReceive(Context context, Intent intent) {//当广播到来的手onReceive方法就会得到执行,具体的逻辑就在这个方法里处理 if (intent.getAction().equals("this is a broadcast from
the second activity")) {Intent i = new Intent(context, ThirdActivity.class);i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//跳转到第三个Activity context.startActivity(i);} else if (intent.getAction().equals("this is a broadcast from
the third activity")) {Intent i = new Intent(context, MainActivity.class);i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//跳转到第三个Activity context.startActivity(i);}} }
public class ThirdActivity extends AppCompatActivity {private LocalBroadcastManager mLocalBroadcastManager;@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_third);mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);}public void third(View view) {//使用Intent传递数据给广播接收器 Intent intent = new Intent("this is a broadcast from
the third activity");//发送本地广播 mLocalBroadcastManager.sendBroadcast(intent);} }
public class SecondActivity extends AppCompatActivity {private LocalBroadcastManager mLocalBroadcastManager;@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);}public void second(View view) {//使用Intent传递数据给广播接收器 Intent intent = new Intent("this is a broadcast from
the second activity");//发送本地广播 mLocalBroadcastManager.sendBroadcast(intent);} }
public class MainActivity extends AppCompatActivity {private LocalBroadcastManager mLocalBroadcastManager;private MyBroadcastReceiver mReceiver;@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initBroadcast();}private void initBroadcast() {//1.获取LocalBroadcastManager实例对象 mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);//2.创建IntentFilter对象 IntentFilter intentFilter = new IntentFilter();//3.添加Action(也就是广播接收器需要接收的广播) intentFilter.addAction("this is a broadcast from the second activity");intentFilter.addAction("this is a broadcast from the third activity");//4.创建广播接收器实例对象 mReceiver = new MyBroadcastReceiver();//5.注册广播 mLocalBroadcastManager.registerReceiver(mReceiver, intentFilter);}public void first(View view) {Intent intent = new Intent(this, SecondActivity.class);startActivity(intent);}@Override protected void onDestroy() {super.onDestroy();//6.在Activity销毁的时候取消注册广播接受器 mLocalBroadcastManager.unregisterReceiver(mReceiver);} }
本地广播LocalBroadcastManager简单使用相关推荐
- Android复习12【广播接收者-BroadcastReceiver(简单案例-发送广播、静态注册、动态注册、本地广播、代码示例(别处登陆踢用户下线)、常用系统广播总结、音乐播放器)】
2020-04-28[11周-周二] 音乐播放器Android代码下载:https://wws.lanzous.com/ifqzihaxvij 目 录 简单案例-发送广播 2)动态注册实例(监听网 ...
- Android LocalBroadcast 本地广播源码解析
前言: Android 本地广播实现非常简单,就一个类.android.support.v4.content.LocalBroadcastManager 大概200行代码.我们看下关键的几个地方 注册 ...
- 强制下线 使用本地广播
强制下线功能:实现强制下线的功能思路比较简单,只需要收到异地登陆发出的广播,弹出一个对话 框,让用户无法进行交互,用户必须要点击确定按钮,重新登陆. -在点击按钮的处理逻辑中,销毁掉所有的活动,并重新 ...
- Android入门(11)| 全局广播与本地广播
文章目录 广播概念 接收广播 动态注册 实例 静态注册 实例 发送广播 发送标准广播 广播的跨进程特性 发送有序广播 本地广播 广播概念 Android 中的每个应用程序都可以对自己感兴趣的广播进行注 ...
- C# socket编程实践——支持广播的简单socket服务器
在上篇博客简单理解socket写完之后我就希望写出一个websocket的服务器了,但是一路困难重重,还是从基础开始吧,先搞定C# socket编程基本知识,写一个支持广播的简单server/clie ...
- Android 进程常驻(5)----开机广播的简单守护以及总结
这是一个轻量级的库,配置几行代码.就能够实如今android上实现进程常驻,也就是在系统强杀下,以及360获取root权限下.clean master获取root权限下都无法杀死进程 支持系统2.3到 ...
- Android 系统(270)---开机广播的简单守护以及总结
Android 进程常驻(5)----开机广播的简单守护以及总结 这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下,以及360获取root权限下,clea ...
- 钉钉 6.0 开放底层“协同框架” 开发多人实时协作程序像编本地程序一样简单...
2021 年新年伊始,钉钉在 1 月 14 日发布了最新 6.0 版本,同时宣布战略定位全面升级,钉钉将从过去基于IM的协同办公平台,升级为企业协同办公和应用开发平台. 从产品和市场表现,钉钉已经杀出 ...
- 构建本地缓存java_Java8简单的本地缓存实现
这里我将会给大家演示用ConcurrentHashMap类和lambda表达式实现一个本地缓存.因为Map有一个新的方法,在key为Null的时候自动计算一个新的value值.非常适合实现cache. ...
最新文章
- php,http_build_query,乱码
- Laravel 5.5 的错误异常处理机制以及应用实例
- linux添加自己的库,Linux学习笔记——例叙makefile 增加自定义共享库
- C语言程序练习-L1-003 个位数统计 (15分)
- oracle锁表怎么解决,Oracle锁表问题的简捷处理技巧
- 双网卡主机配置oracle监听,VirtualBox设置双网卡实现虚机上网及主宿机互访
- java中得到classpath和当前类的绝对路径的一些方法(路径中的%20进行替换空格)...
- 使用durid的ConfigFilter对数据库密码加密
- c语言程序设计语言描述,C语言程序设计题目描述(详).txt
- 模型秒变API只需一行代码,支持TensorFlow等框架
- 中文乱码之springboot框架中两工程之间参数传递乱码
- 12-畅通工程续(多种方法求最短路径)
- C盘\用户目录下\管理员文件夹 如何重命名?
- 暗黑破坏神(DIABLOII 1.11B)BOT 及源代码公开下载
- php查重,知网查重时检测php之类的源码吗?【干货分享】
- Kubernetes能成大事,华为云的眼光“真毒”
- excel导出图片---HSSFWorkbook--SXSSFWorkbook
- 考虑蒙特卡洛考虑风光不确定性的配电网运行风险 评估 由于风电光伏出力的不确定性,造成配电网运行风险,运用蒙特卡洛概率潮流计算分析电压和线路支路越限
- Fast Affine Template Matching over Galois Field仿射模板匹配数据测试问题
- Google Chart API学习(二)