BUfferknife与EventBus

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)方法即可

你可能感兴趣的:(BUfferknife与EventBus)