EventBus3.0

EventBus 是一个使用“观察者模式”的、松耦合的开源框架。它使用少量的几句代码就可以实现核心类之间的通讯,帮助我们简化代码、松依赖、加速开发。
1.添加依赖
compile 'org.greenrobot:eventbus:3.0.0'

 2.MainActivity代码(发送普通事件、发送粘性事件)

public class MainActivity extends AppCompatActivity {

    private TextView tv_message;
    private Button bt_message;
    private Button bt_subscription;

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

        tv_message = (TextView) findViewById(R.id.tv_message);
        bt_message = (Button) findViewById(R.id.bt_message);
        bt_subscription = (Button) findViewById(R.id.bt_subscription);

        bt_message.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                startActivity(intent);
            }
        });

        bt_subscription.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //注册事件
                EventBus.getDefault().register(MainActivity.this);
            }
        });
    }

    //普通事件
    @Subscribe(threadMode = ThreadMode.POSTING)
    public void onMoonEvent(MessageEvent messageEvent){
        Toast.makeText(this,messageEvent.getMessage(),0).show();
    }

    //粘性事件
    @Subscribe(threadMode = ThreadMode.POSTING,sticky = true)
    public void onMoonEvent(MessageEvent messageEvent){
        Toast.makeText(this,messageEvent.getMessage(),0).show();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //取消注册事件
        EventBus.getDefault().unregister(this);
    }
}

3.SecondActivity

class SecondActivity extends AppCompatActivity{

    private Button bt_second;

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

        bt_second = (Button) findViewById(R.id.bt_second);

        bt_second.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //发送普通事件
                EventBus.getDefault().post(new MessageEvent("传递数据"));
                finish();
            }
        });
        bt_second.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //发送粘性事件
                EventBus.getDefault().postSticky(new MessageEvent("传递数据"));
                finish();
            }
        });
    }
}

4.MessageEvent

public class MessageEvent {
    private String message;

    public MessageEvent(String message){
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

 

posted on 2018-02-28 14:20  爱学习的亮亮  阅读(100)  评论(0)    收藏  举报

导航