EventBus简单使用
2016-09-11 21:17
369 查看
AS中添加依赖的方式
compile 'de.greenrobot:eventbus:3.0.0-beta1'
EventBus的简单使用
1、一般简单的模式发送消息的注册、消息传输的载体、消息发送的动作、消息接受的方式、解除消息注册是EventBus的一般简单模式的五大要素。
简单理解
A、发送消息的注册接受消息的位置
B、消息传输的载体
在EventBus中消息的传输都是需要对象的,所以需要创建一个类来转载消息的内容。
C、消息发送的动作
消息需要发送,并且发送者是一个EventBus对象
D、消息接受的方式
onEvent:
如果是用这种类型的接受方式,就标明了发送产生的线程和消息接受的线程就是一样的了,所以最好不要在这里有耗时的任务,因为会导致消息的传递的延时发生。
onEventMainThread:
如果使用这种类型的接受方式,就标明了消息接受的方式后处理的时候,就是在Android的UI线程中执行,可以很好地跟新UI,切记不要执行耗时的任务。
onEventBackground:
如果使用这种方式的接受方式,情况有两种:如果是UI线程发出的消息,那么接受的方式就会运行在一个子线程中;如果是子线程发出的消息,那么就会执行在该子线程中运行。
onEventAsync:
如果使用这种方式的接受,无论消息的发出在哪里的线程,消息的接受都会执行在Async的线程池的线程中。
5、消息的注册
也就是消息的接受载体的生命周期完结后,需要释放资源。
简单的例子
package com.neal.android.eventbusdemo1; /** * Created by neal on 16-9-11 */ public class FirstEvent { private String msg; public FirstEvent(String msg){ this.msg=msg; } public String getMsg(){ return this.msg; } } package com.neal.android.eventbusdemo1; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import de.greenrobot.event.EventBus; import de.greenrobot.event.Subscribe; public class MainActivity extends Activity { private TextView tv; private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv= (TextView) this.findViewById(R.id.tv); btn= (Button) this.findViewById(R.id.btn); EventBus.getDefault().register(this); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(getApplicationContext(),SecondActivity.class); startActivity(intent); } }); } @Subscribe public void onEventMainThread(FirstEvent event){ tv.setText(event.getMsg()); } @Override protected void onDestroy() { EventBus.getDefault().unregister(this); super.onDestroy(); } } package com.neal.android.eventbusdemo1; import android.app.Activity; import android.os.Bundle; import android.view.View; import de.greenrobot.event.EventBus; /** * Created by neal on 16-9-11 */ public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); this.findViewById(R.id.btn_send).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { EventBus.getDefault().post(new FirstEvent("我是SecondActivity的msg")); } }); } }
这个人更厉害
http://blog.csdn.net/jdsjlzx/article/details/51100516
相关文章推荐
- EventBus 《二》 Android EventBus的简单使用
- Android框架之EventBus的简单使用
- Eventbus简单使用
- EventBus的简单使用
- 简单使用RxBus替代EventBus
- EventBus的简单使用
- EventBus的简单使用
- EventBus简单使用
- EventBus的简单使用
- EventBus的简单使用
- 传递消息--第三方开源--EventBus的简单使用
- Eventbus简单使用
- EventBus使用的简单介绍
- EventBus简单使用
- EventBus的简单使用
- eventbus简单使用
- 传递消息--第三方开源--EventBus的简单使用
- EventBus简单使用教程
- EventBus 3.0 简单使用
- EventBus使用简单小结和在比喻中理解不同订阅模式