如google docs和Service broadcast doc中所述,如何使用/定位LocalBroadcastManager

我试图谷歌它,但没有可用的代码开始?

文件说如果我想在我的应用程序进程内部进行广播,我应该使用它,但我不知道在哪里寻找这个。

任何帮助/评论?

更新 :我知道如何使用广播,但不知道如何在我的项目中使用LocalBroadcastManager


#1楼

我宁愿全面回答。

  1. LocalbroadcastManager包含在android 3.0及更高版本中,所以你必须使用支持库v4进行早期版本。 看这里的说明

  2. 创建广播接收器:

     private BroadcastReceiver onNotice= new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // intent can contain anydata Log.d("sohail","onReceive called"); tv.setText("Broadcast received !"); } }; 
  3. 在onResume中注册您的接收器,例如:

     protected void onResume() { super.onResume(); IntentFilter iff= new IntentFilter(MyIntentService.ACTION); LocalBroadcastManager.getInstance(this).registerReceiver(onNotice, iff); } //MyIntentService.ACTION is just a public static string defined in MyIntentService. 
  4. onPause中的unRegister接收器:

     protected void onPause() { super.onPause(); LocalBroadcastManager.getInstance(this).unregisterReceiver(onNotice); } 
  5. 现在,每当从应用程序的活动或服务发送localbroadcast时,onReceive on onNotice将被调用:)。

编辑:您可以在这里阅读完整的教程LocalBroadcastManager:Intra应用程序消息传递


#2楼

可以在开发人员文档中找到实现LocalBroadcastManager的Activity和Service的示例。 我个人发现它非常有用。

编辑:此后该链接已从网站中删除,但数据如下: https : //github.com/carrot-garden/android_maven-android-plugin-samples/blob/master/support4demos/src/com/例如/机器人/ supportv4 /内容/ LocalServiceBroadcaster.java


#3楼

我们也可以在这里使用与broadcastManger相同的接口我正在通过接口共享broadcastManager的testd代码。

首先做一个像这样的界面:

public interface MyInterface {void GetName(String name);
}

2 - 这是第一个需要实现的类

public class First implements MyInterface{MyInterface interfc;    public static void main(String[] args) {First f=new First();      Second s=new Second();f.initIterface(s);f.GetName("Paddy");}private void initIterface(MyInterface interfc){this.interfc=interfc;}public void GetName(String name) {System.out.println("first "+name);interfc.GetName(name);  }
}

3 - 这是实现相同接口的第二个类,其方法自动调用

public class Second implements MyInterface{public void GetName(String name) {System.out.println("Second"+name);}
}

所以通过这种方法我们可以使用与broadcastManager相同的接口。


#4楼

当你玩LocalBroadcastReceiver时我会建议你试试Green Robot的EventBus - 你肯定会意识到它与LBR相比它的区别和用处。 可以使用更少的代码,可以自定义接收者的线程(UI / Bg),检查接收器可用性,粘性事件,事件作为数据传递等。


#5楼

在接收结束时:

  • 首先注册LocalBroadcast Receiver
  • 然后处理onReceive中的传入意图数据。

      @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this); lbm.registerReceiver(receiver, new IntentFilter("filter_string")); } public BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent != null) { String str = intent.getStringExtra("key"); // get all your data from intent and do what you want } } }; 

发送结束时:

   Intent intent = new Intent("filter_string");intent.putExtra("key", "My Data");// put your all data using put extra LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

#6楼

如何将全局广播更改为LocalBroadcast

1)创建实例

LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);

2)用于注册BroadcastReceiver

更换

registerReceiver(new YourReceiver(),new IntentFilter("YourAction"));

localBroadcastManager.registerReceiver(new YourReceiver(),new IntentFilter("YourAction"));

3)用于发送广播消息

更换

sendBroadcast(intent);

localBroadcastManager.sendBroadcast(intent);

4)取消注册广播消息

更换

unregisterReceiver(mybroadcast);

localBroadcastManager.unregisterReceiver(mybroadcast);

#7楼

androidx.localbroadcastmanager 1.1.0 版中已被弃用

原因

LocalBroadcastManager是一个应用程序范围的事件总线,并在您的应用程序中包含图层违规; 任何组件都可以侦听来自任何其他组件的事件。 它继承了系统BroadcastManager不必要的用例限制; 开发人员必须使用Intent,即使对象只存在于一个进程中而且永远不会离开它。 出于同样的原因,它不遵循功能方面的BroadcastManager。

这些加起来令人困惑的开发人员体验。

替换

您可以将LocalBroadcastManager使用替换为可观察模式的其他实现。 根据您的使用情况,合适的选项可能是LiveData或反应流。

LiveData的优势

您可以使用单例模式扩展LiveData对象以包装系统服务,以便可以在应用程序中共享它们。 LiveData对象连接到系统服务一次,然后任何需要该资源的观察者都可以只观看LiveData对象。

 public class MyFragment extends Fragment {@Overridepublic void onActivityCreated(Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);LiveData<BigDecimal> myPriceListener = ...;myPriceListener.observe(this, price -> {// Update the UI.});}
}

observe()方法将片段( LifecycleOwner一个实例)作为第一个参数传递。 这样做表示此观察者绑定到与所有者关联的Lifecycle对象,这意味着:

  • 如果Lifecycle对象未处于活动状态,则即使值发生更改,也不会调用观察者。

  • 销毁Lifecycle对象后,会自动删除观察者

LiveData对象具有生命周期感知这一事实意味着您可以在多个活动,片段和服务之间共享它们。


#8楼

以下是如何使用广播接收器https://youtu.be/m_aP8E35jaE的示例


#9楼

无论如何我会回答这个问题。 以防有人需要它。

ReceiverActivity.java

监视名为"custom-event-name"的事件的通知的活动。

@Override
public void onCreate(Bundle savedInstanceState) {...// Register to receive messages.// We are registering an observer (mMessageReceiver) to receive Intents// with actions named "custom-event-name".LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,new IntentFilter("custom-event-name"));
}// Our handler for received Intents. This will be called whenever an Intent
// with an action named "custom-event-name" is broadcasted.
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {// Get extra data included in the IntentString message = intent.getStringExtra("message");Log.d("receiver", "Got message: " + message);}
};@Override
protected void onDestroy() {// Unregister since the activity is about to be closed.LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);super.onDestroy();
}

SenderActivity.java

发送/广播通知的第二个活动。

@Override
public void onCreate(Bundle savedInstanceState) {...// Every time a button is clicked, we want to broadcast a notification.findViewById(R.id.button_send).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {sendMessage();}});
}// Send an Intent with an action named "custom-event-name". The Intent sent should
// be received by the ReceiverActivity.
private void sendMessage() {Log.d("sender", "Broadcasting message");Intent intent = new Intent("custom-event-name");// You can also include some extra data.intent.putExtra("message", "This is my message!");LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}

使用上面的代码,每次单击按钮R.id.button_send ,都会广播一个Intent, mMessageReceiver ReceiverActivitymMessageReceiver ReceiverActivity

调试输出应如下所示:

01-16 10:35:42.413: D/sender(356): Broadcasting message
01-16 10:35:42.421: D/receiver(356): Got message: This is my message!

#10楼

在Eclipse中,最终我必须通过右键单击我的项目并选择以下内容来添加兼容性/支持库

Android工具 - > 添加支持库

一旦添加,我就可以在我的代码中使用LocalBroadcastManager类。


如何使用LocalBroadcastManager?相关推荐

  1. Android之LocalBroadcastManager源码解析

    转载请标明出处:[顾林海的博客] 个人开发的微信小程序,目前功能是书籍推荐,后续会完善一些新功能,希望大家多多支持! 前言 广播想必大家都不陌生,日常开发中同一个APP中的多个进程之间需要进行传输信息 ...

  2. Fragment使用LocalBroadcastManager接收广播消息

    这种方式不用在配置文件加东西 变量声明 [java] view plaincopy LocalBroadcastManager broadcastManager; IntentFilter inten ...

  3. Android LocalBroadcastManager 的使用总结

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/53105494 本文出自[赵彦军的博客] 前言 在Android中,Broadcas ...

  4. 关于LocalBroadcastManager的介绍和优势

    在Android系统中,BroadcastReceiver的设计初衷就是从全局考虑的,可以方便应用程序和系统.应用程序之间.应用程序内的通信,所以对单个应用程序而言BroadcastReceiver是 ...

  5. LocalBroadcastManager 的使用

    一.使用本地广播发送一条广播(本例为自己发送自己接收,本地广播也可以是其他应用接收)然后接收到广播时回调Receiver类中的回调方法onReceive()在此方法中自定义发出通知 代码 1 pack ...

  6. android广播第三方库,Android Support 库:LocalBroadcastManager

    在介绍完 Android Support 库发展历程(http://blog.chengyunfeng.com/?p=1047)后, 再分别介绍下 Android Support 库中有用但是被忽略的 ...

  7. Android编程之LocalBroadcastManager源码详解

    LocalBroadcastManager 是V4包中的一个类,主要负责程序内部广播的注册与发送.也就是说,它只是适用代码中注册发送广播,对于在AndroidManifest中注册的广播接收,则不适用 ...

  8. 使用LocalBroadcastManager

    LocalBroadcastManager是Android Support包提供了一个工具,是用来在同一个应用内的不同组件间发送Broadcast的. 使用LocalBroadcastManager有 ...

  9. 本地广播LocalBroadcastManager简单使用

    /** * 由于系统的全局广播可以被任何应用程序接收到,并且我们也可以接收来自任何程序的广播 * 这样很容易引起安全问题,因此Google引入的本地广播LocalBroadcastManager */ ...

最新文章

  1. 程序员请收好:10个非常有用的 Visual Studio Code 插件!
  2. python 中文字转拼音
  3. CSDN 字体颜色表
  4. wp7使用Cocos2d-X for XNA制作一个塔防类游戏 (二)在游戏中加入地图和怪物。(上)
  5. 强化学习(八)价值函数的近似表示与Deep Q-Learning
  6. 从SAP社区上的一篇博客开始,聊聊SAP产品命名背后的那份情怀
  7. RTP在。net中的使用(资料)
  8. 关于遍历字典的二三事
  9. 基姆拉尔森计算公式(算任意日期是星期几)
  10. Win-MASM64汇编语言-JMP指令
  11. dask 于数据分析_利用Dask ML框架进行欺诈检测-端到端数据分析
  12. WEB前端经典笔试/面试题
  13. 基于raspbian+motion的家庭监控网络
  14. python 爬虫 爬取 小米有品 全网 商品数据
  15. 使用Windows自带工具WINSat给硬盘测速
  16. 一篇文章,中文发完英文发,算“一稿多投”吗?
  17. 关于O(log2n)的个人理解
  18. 喜大普奔!GitHub 官方 App 正式版首发!
  19. LIUNX账户与安全
  20. Dataframe两列值去重

热门文章

  1. Android 开发包括哪些方面?如何提升?
  2. 用神经集认识手写数字
  3. Android2.3平台输入输出机制之总结
  4. Android 10.0 系统启动之SystemServer进程-[Android取经之路]
  5. Apache Cordova-Android框架原理研究笔记
  6. MapReduce-Shuffle机制运行解析
  7. Swift 单元测试
  8. linux怎么复制粘贴_linux中的实用技巧和快捷键总结
  9. 【转载】flash时间轴中变量的作用域
  10. for循环console输出结果的问题