AndroidEventBus使用----基本操作(1)
2016-05-21 13:28
579 查看
1.概述
Aactivity和Bactivity,从Aactivity跳转到Bactivity,如果在Bactivity中要更新Aactivity怎么办?我想最简单的方法就是startActivityForResult。如果Aactivity中的该方法如果处理的业务过于复杂,那代码的可读性会变得特别差。
自从看了 Mr Simple 的AndroidEventBus以后,我觉得事件处理,变得那么的简单和简洁,让review代码变得轻松自如。
2.实战
AndroidEventBus是基于 EventBus 进行重构的事件总线框架,它主要解决Activity、Fragmen、Service等之间的交互,力争低耦合的高质量的代码。 AndroidEventBus的原理类似java中的观察者模式,只要订阅了事件的对象,在修改或者发送事件的时候,所有订阅对象都将受到通知。AndroidEventBus的使用,也极其简单,主要三步走:
EventBus.getDefault().register(this),注册需要订阅事件的对象。当然如果要取消订阅对象需要unregister。
添加需要被通知的方法,使用Subscriber注解进行标注。
EventBus.getDefault().post(Object),发送事件通知订阅者。
1.Aactivity代码:
public class MainActivity extends Activity {
Button btnJump;//跳转到Bactivity
TextView tvContent;//等待Bactivity修改的textview
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EventBus.getDefault().register(this);
btnJump = (Button) findViewById(R.id.btnJump);
btnJump.setText("go to Bactivity");
tvContent = (TextView) findViewById(R.id.tvContent);
btnJump.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
}
//响应的方法
@Subscriber(tag="tag")
public void get(String string){
tvContent.setText(string);
}
//响应的方法
@Subscriber(tag="tag")
public void get1(String string){
Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
EventBus.getDefault().unregister(this);
super.onDestroy();
}
}
2.Bactivity的代码:
public class SecondActivity extends Activity {
Button btnJump;
TextView tvContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
setContentView(R.layout.activity_main);
btnJump = (Button) findViewById(R.id.btnJump);
btnJump.setText("change Aactivity text");
tvContent = (TextView) findViewById(R.id.tvContent);
btnJump.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//发送事件
EventBus.getDefault().post("Toast show", "tag");
}
});
}
}
3.实际效果:
3后记
第一次写解析开源框架的代码确实或有稍许紧张,为了使用markdown写博客,所以把两个都不熟悉的东西都做第一次的尝试,希望后续越来越好。关于AndroidEventBus的所有应用层面的代码,已经全部给出,所以它真的很简单很方便。本文只是对AndroidEventBus做了介绍,想要了解开源框架,看源码是必不可少的,后续将继续对它做更深入的了解,紧张期待中!
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories