您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: