EventBus3.0的使用

EventBus3.0的使用

相关文章:

http://greenrobot.org/eventbus/documentation/

http://blog.csdn.net/qq_28746251/article/details/51476389

http://www.jianshu.com/p/1eaca34e5314



1、定义消息类型

package com.lwb.event;

public class FirstEvent {
    private String mMsg;//消息内容
    private String tag; //消息类型

    public FirstEvent(String mMsg, String tag) {
        super();
        this.mMsg = mMsg;
        this.tag = tag;
    }

    public String getTag() {
        return tag;
    }

    public void setTag(String tag) {
        this.tag = tag;
    }

    public FirstEvent(String msg) {
        mMsg = msg;
    }

    public String getMsg() {
        return mMsg;
    }

}


2、注册监听器、订阅消息Subscribe(可以设置启动的 threadMode、sticky等)

package com.lwb.main;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.lwb.event.FirstEvent;

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;

public class MainActivity extends AppCompatActivity {

    TextView mTextView1 = null;
    TextView mTextView2 = null;
    TextView mTextView3 = null;
    TextView mTextView4 = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView1 = (TextView) findViewById(R.id.text1);
        mTextView2 = (TextView) findViewById(R.id.text2);
        mTextView3 = (TextView) findViewById(R.id.text3);
        mTextView4 = (TextView) findViewById(R.id.text4);
        //注册监听
        EventBus.getDefault().register(this);
    }


    /**
     * 用这个函数来接收消息
     *
     * @param event 自己定义的类
     */
    @Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
    public void receiveMsg(FirstEvent event) {
        String tag = event.getTag();
        if (tag != null && !TextUtils.isEmpty(tag)) {
            Log.i(TAG, "收到了tag的消息");
        } else {
            String msg = "ThreadMode.MAIN" + event.getMsg();
            mTextView1.setText(msg);
            Log.i(TAG, "不是tag的消息"  + msg);
            Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
        }
    }

    @Subscribe(threadMode = ThreadMode.POSTING)
    public void receiveMsg1(FirstEvent event) {
        String tag = event.getTag();
        if (tag != null && !TextUtils.isEmpty(tag)) {
            Log.i(TAG, "收到了tag的消息");
        } else {
            String msg = " ThreadMode.POSTING" + event.getMsg();
            mTextView2.setText(msg);
            Log.i(TAG, "不是tag的消息"  + msg);
            Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
        }
    }

    @Subscribe(threadMode = ThreadMode.BACKGROUND)
    public void receiveMsg2(FirstEvent event) {
        String tag = event.getTag();
        if (tag != null && !TextUtils.isEmpty(tag)) {
            Log.i(TAG, "收到了tag的消息");
        } else {

            String msg = "ThreadMode.BACKGROUND " + event.getMsg();
            mTextView3.setText(msg);
            Log.i(TAG, "不是tag的消息"  + msg);
            Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
        }
    }

    @Subscribe(threadMode = ThreadMode.ASYNC)
    public void receiveMsg3(FirstEvent event) {
        String tag = event.getTag();
        if (tag != null && !TextUtils.isEmpty(tag)) {
            Log.i(TAG, "收到了tag的消息");
        } else {
            String msg = "ThreadMode.ASYNC" + event.getMsg();
            mTextView4.setText(msg);
            Log.i(TAG, "不是tag的消息"  + msg);
            Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
        }
    }

    private static final String TAG = "MainActivity222";


    public void onBtnClick(View view) {

        Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
        startActivity(intent);

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        EventBus.getDefault().unregister(this);
    }
}


3、发布消息

package com.lwb.main;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

import com.lwb.event.FirstEvent;

import org.greenrobot.eventbus.EventBus;

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }

    public void onBtnClick4All(View view) {
        EventBus.getDefault().post(new FirstEvent("onBtnClick4All"));

    }

    public void onBtnClick4One(View view) {
        EventBus.getDefault().post(new FirstEvent("onBtnClick4One", "1"));
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值