EventBus 3.0 Sticky (粘性)

来源:互联网 发布:大数据修炼系统 编辑:程序博客网 时间:2024/04/28 03:10

如果app中有定位或传感器数据,你需要获取最新的数据;你可以考虑使用粘性事件而不是自己去获取。EventBus 将最新的粘性事件保存在内存中。粘性事件可以被传递给订阅者或显示查询。因此,你不需要任何特殊逻辑去获取已有的数据。

1.build.gradle

compile ‘org.greenrobot:eventbus:3.0.0’

2.发送事件 postSticky

public class MainActivity extends AppCompatActivity {    private TextView tv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv = (TextView) findViewById(R.id.tv);        tv.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                EventBus.getDefault().postSticky(new MessageEvent("发送"));//发送事件                startActivity(new Intent(MainActivity.this,SecActivity.class));            }        });    }}

3.SecActivity中注册,取消注册,处理事件

public class SecActivity extends Activity {    @Override    public void onStart() {        super.onStart();        EventBus.getDefault().register(SecActivity.this);//注册    }    @Subscribe(sticky = true, threadMode = ThreadMode.MAIN)    public void onEvent(MessageEvent event) {//处理        Toast.makeText(SecActivity.this,event.getMessage(),Toast.LENGTH_SHORT).show();    }    @Override    protected void onDestroy() {        super.onDestroy();        EventBus.getDefault().removeAllStickyEvents();        EventBus.getDefault().unregister(this);//取消注册    }}
原创粉丝点击