Android_EventBus使用
2016-06-13 17:36
375 查看
先看Demo,其中zhang就是第二个Activity在Finsh()时候返回给第一个Activity的字符串。
当然这只是其中最简单的用法,本身Android平台就有很多种几个Activity之间传值的,
但是很多情况比如某个控件状态更新或者请求有了数据之后,别的组件需要得到通知,
传统的方法有观察者模式或者接口回调均可以实现,这次我们用EventBus来实现比较方便简单。
代码
两个Activiy的界面就不用写了,都很简单,第一个就是一个TextVIew和一个Button
第二个Activity放置了一个Button。
思路是我们要在某个界面接受到通知的内容,那么我就注册在某个界面,那么对于Demo来讲
自然就是Activiy1了,
public class MainActivity extends AppCompatActivity { @Bind(R.id.textView) //用的Butterknife的注解省略findviewbyid方法 TextView textView; @Bind(R.id.button) Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); EventBus.getDefault().register(this); //再该界面接受通知 } //下面的注解一定要加,否则无法添加观察者,FirstEvent为我们自己定义的事件类型 @Subscribe public void onEventMainThread(FirstEvent f){ textView.setText(f.getMsg()); } @OnClick(R.id.button) public void onClick() { startActivity(new Intent(this,Main2Activity.class)); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); //界面销毁时候一定要解除注册否则内存泄漏 } }
接受通知的界面我们定义好了,那么谁来发送通知呢?
对于我们Demo来讲,就是Activiy2了
public class Main2Activity extends AppCompatActivity { @Bind(R.id.button2) Button button2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); ButterKnife.bind(this); } @OnClick(R.id.button2) public void onClick() { //Post我们可以抽象为当该界面的某个组件发生变化时候,通知其他组件 EventBus.getDefault().post(new FirstEvent("zhang")); finish(); } }
ok,大家先可以尝试下,至于其他的用法我们再慢慢研究,先让Demo跑起来
下载 代码
相关文章推荐
- 使用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