Bufferknife
依赖
implementation 'com.jakewharton:butterknife:10.1.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
在清单列表上面
compileOptions{
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
EventBus
1,导入依赖
implementation'org.greenrobot:eventbus:3.1.1'
2,自定义一个事件类 加上自己要的参数
3,注册事件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
//注册
EventBus.getDefault().register(this);
}
4,在onDestroy中解注册
@Override
protected void onDestroy() {
super.onDestroy();
//解注册
EventBus.getDefault().unregister(this);
}
5,发送事件(参数就是事件类)
@OnClick(R.id.btn_pulish)
public void onViewClicked() {
MessageEvent event =new MessageEvent("liuzhanyue","19","我是通过EventBus发布的消息");
EventBus.getDefault().post(event);
finish();
}
6,处理事件
//权限修饰符必须是public
@Subscribe(threadMode = ThreadMode.MAIN,sticky =false)
public void getData(MessageEvent event) {
Log.e("TAG","MainActivity getData()的日志" + event.toString());
Toast.makeText(MainActivity.this, event.toString(), Toast.LENGTH_SHORT).show();
}
粘性事件
1,发送事件
EventBus.getDefault().postSticky("来自MainActivity粘性事件");
2,处理事件
@Subscribe(threadMode = ThreadMode.MAIN,sticky =true)
public void getMainData(String msg){
Log.e("TAG","SubscribActivity getMainData()的日志" + msg);
}
EventBus好处:
EventsBus能够简化各组件间的通信,让代码书写变得简单,有效分离事件发送方接收方(也就是解耦的意思),能避免复杂和容易出错的依赖性和生命周期问题
EventBus三要素:
①,Event事件 它可以是任意类型
②,时间订阅者 在EventBus3.0之前我们必须定义onEvent开头的那几个方法,分别是onEvent,onEventMainThread,onEventBackgroundThread和onEventAsycn,而在之后事件处理的方法名可以随意取,不过需要加注释@subscribe(),并且指定线程模型,默认是POSTING
③,Publisher事件发布者 我们可以在任意线程里发布对象,一般情况下,使用EventBus.getDefault()就可以得到一个EventBus对象,然后在调用post(Object)方法即可