EventBus简单使用

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.youkuaiyun.com/jdsjlzx/article/details/51100516

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值