Andoid 总线设计 (一)
来源:互联网 发布:linux中chown r 编辑:程序博客网 时间:2024/06/05 21:02
以前没有用过 EvenBus ,在Andoid开发过程中 经常使用广播进行通信,
太麻烦了,后面发现了一个叫EvenBus的东西 终于可以减少 了好多广播事件。代码简单了,耦合度低了。Evenbus 确实是个好东西。
没有了解过的同学可以看看 EventBus
举个列子:
public class MainActivity extends Activity {
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 注册EventBus EventBus.getDefault().register(this); startActivity(new Intent(this,SecondActivity.class));}@Overrideprotected void onDestroy() { super.onDestroy(); // 反注册EventBus EventBus.getDefault().unregister(this);}// 主线程调用@Subscribe(threadMode = ThreadMode.MAIN)public void eventBusMain(String str){ Log.i("TAG", "MAIN:"+str+" Thread="+Thread.currentThread().getId());}// 1.发布线程为主线程,新开线程调用// 2.发布线程为子线程,发布线程调用@Subscribe(threadMode = ThreadMode.BACKGROUND)public void eventBusBg(String str){ Log.i("TAG", "BACKGROUND:"+str+" Thread="+Thread.currentThread().getId());}// 在发布线程调用,默认值@Subscribe(threadMode = ThreadMode.POSTING)public void eventBusPosting(String str){ Log.i("TAG", "POSTING:"+str+" Thread="+Thread.currentThread().getId());}// 每次都新开线程调用@Subscribe(threadMode = ThreadMode.ASYNC)public void eventBusAsync(String str){ Log.i("TAG", "ASYNC:"+str+" Thread="+Thread.currentThread().getId());}
}
public class SecondActivity extends Activity {
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); EventBus.getDefault().post("from second activity mainThread: info"); Log.i("TAG", "Post thread="+Thread.currentThread().getId()); new Thread(new Runnable() { @Override public void run() { EventBus.getDefault().post("from second activity childThread: info"); Log.i("TAG", "Post thread="+Thread.currentThread().getId()); } }).start();}
}
在 SecondActivity 中调用
EventBus.getDefault().post(“from second activity childThread: info”);
在 MainActivity 对应 @Subscribe 方法就可以接收得到。
是不是很神奇,如果没有EvenBus 你只能用广播接收 了。
下一节 我们 简单的模拟一下 EvenBus 的实现。
1 0
- Andoid 总线设计 (一)
- Andoid 总线设计 (二)
- Andoid 总线设计 (三)
- Andoid 总线设计 (三)
- Andoid图像处理专题(一)
- Andoid开发之Java基础(一)
- 一、andoid基础之四大组件
- 基于MCP2515的Linux CAN总线驱动程序设计(一)
- 基于MCP2515的Linux CAN总线驱动程序设计(一)
- 基于MCP2515的Linux CAN总线驱动程序设计(一)
- 基于MCP2515的Linux CAN总线驱动程序设计(一)
- 基于MCP2515的Linux CAN总线驱动程序设计(一)
- 基于MCP2515的Linux CAN总线驱动程序设计(一)
- 基于MCP2515的Linux CAN总线驱动程序设计(一)
- 基于MCP2515的Linux CAN总线驱动程序设计(一)
- 基于MCP2515的Linux CAN总线驱动程序设计(一)
- 领域驱动设计学习笔记(一 事件总线)
- 基于MCP2515的Linux CAN总线驱动程序设计(一)
- Qt之QRadioButton
- 使用google的zxing类生成一维码、二维码实例
- 使用CheckBox控件实现同意条款效果
- HDU-1163Eddy's digital Roots,九余定理的另一种写法!
- Flip Game II
- Andoid 总线设计 (一)
- 学习笔记——自定义EditText右侧带图片控件
- 异步线程处理bitmap
- java的设计模式——装饰模式
- [c++]代理对象模式
- iOS之Reachability和AFN判断网络连接状态
- Velocity源码分析以及Spring集成
- CSS——块&行标签
- 利用handler的延时实现app载入时loading