北京个人制作网站,视频永久免费生成二维码,商丘建设网站,网站开发需要书籍Android中Activity、Service、Fragment之间的相互通信比较麻烦#xff0c;主要有以下一些方法#xff1a; (1)使用广播#xff0c;发送者发出广播#xff0c;接收者接收广播后进行处理#xff1b; (2)使用Handler和Message#xff0c;如下载线程完成下载任务后#xff0…Android中Activity、Service、Fragment之间的相互通信比较麻烦主要有以下一些方法 (1)使用广播发送者发出广播接收者接收广播后进行处理 (2)使用Handler和Message如下载线程完成下载任务后给UI发送MessageUI收到Message后更新界面。 但是这些方法都比较繁琐一种比较简单有效的方法就是使用事件总线。事件总线的基本原理是发送者把消息发送到事件总线然后事件总线在接收者中查找哪些方法注册了这个事件如果某个方法注册了这个事件就触发该方法。这样实现组件之间的通信要比其他方法简单得多代码也更加简洁。 1.下载simple_eventbus.jar并导入Android工程并且在需要发送或接收消息的组件里面import下面两个类 import org.simple.eventbus.EventBus;
import org.simple.eventbus.Subcriber; 2.新建两个ActivityMainActivity和Activity2。其中MainActivity作为消息的接收者Activity2作为消息的发送者。由于这两个Activity都要使用事件总线在onCreate(Bundle savedInstanceState)中需要注册EventBus EventBus.getDefault().register(this); 在onDestroy()中需要注销EventBus EventBus.getDefault().unregister(this); 3.在Activity2中新建一个ButtononClick()方法如下 Overridepublic void onClick(View v) {switch (v.getId()){case R.id.btnRun2:num;txtStatus.setText(点击了 num 次!);EventBus.getDefault().post(new Object(), my_tag);break;default:break;}} 每点击一次Button就使用EventBus.getDefault().post()方法向EventBus发送一次消息。EventBus.getDefault().post()有两个参数第一个参数是向事件接收者传递的对象由于我们这里不需要向发送者传递对象所以只new了一个Object第二个参数是tag相当于广播里面的action只有接收者里面注册了这个tag的方法才会被触发没有注册这个tag的方法就不会被触发。 4.在MainActivity中新建接收消息的方法 Subcriber(tag my_tag)private void updateUI(Object o){num;txtStatus.setText(Activity 2 点击了 num 次!);Log.e(num, String.valueOf(num));} 其中Subcriber(tag my_tag)注解表明该方法是一个消息接收方法tag my_tag表明该方法注册了my_tag这个消息接收到该消息该方法就会被触发。 5.运行结果。进入Activity 26次点击Button 再回到MainActivity可以看到updateUI()被触发显示出了Activity 2的点击次数 转载于:https://www.cnblogs.com/mstk/p/5851039.html