EventBus中的粘性事件

在这里插入图片描述
开始使用:
同样的
第一步还是先导入依赖
第二步还是创建对象

第三步MainActivity,非常简单就一个在跳转后传入一个字符串

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button second_activity_jump;

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

    }

    private void initView() {
        second_activity_jump = (Button) findViewById(R.id.second_activity_jump);

        second_activity_jump.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.second_activity_jump:
                startActivity(new Intent(MainActivity.this,SecondActivity.class));
                EventBus.getDefault().postSticky(new EventBusMessage("粘性事件"));
                finish();
                break;
        }
    }
}

跳转到的Activity,需要注意的一点就是一个类只能注册一次EventBus如果多注册会报错,使用完不仅需要注销注册还需要清空缓存.

public class SecondActivity extends AppCompatActivity implements View.OnClickListener {

    private Button btn;
    private TextView title;

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

    }
    
    @Subscribe( threadMode = ThreadMode.MAIN , sticky = true)
    public void eventMessage(EventBusMessage eventBusMessage){
        title.setText(eventBusMessage.getMessage());
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn:
                //注册
                if(!EventBus.getDefault().isRegistered(this)){
                    EventBus.getDefault().register(this);
                }
                break;
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //注销注册事件
        EventBus.getDefault().unregister(this);
        //清空粘性事件的缓存
        EventBus.getDefault().removeAllStickyEvents();
    }

    private void initView() {
        btn = (Button) findViewById(R.id.btn);
        title = (TextView) findViewById(R.id.title);

        btn.setOnClickListener(this);
    }
}

猜你喜欢

转载自blog.csdn.net/jiahui6666/article/details/84638029