EventBus源码分析

来源:互联网 发布:淘宝昵称怎么修改不了 编辑:程序博客网 时间:2024/05/22 03:46

首先引入一位大神的博客
http://blog.csdn.net/yanghuinipurean/article/details/51646819

以下内容依据上述博客内容进行整理,
EventBus是单例模式的,它的优点就是代替广播,在Android应用组件之间进行通信,代码简洁。

EventBus3.x以上的版本,最主要的一个特点就是使用了注解,我们的Subscribe可以在代码中就指定我们的EventBus使用什么ThreadMode,是否粘性事件,优先级。

public class MainActivity extends AppCompatActivity {

private TextView tv;private Button btn;private NetTask netTask;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    EventBus.getDefault().register(this);    netTask = new NetTask();    tv = (TextView)findViewById(R.id.first_tv);    btn = (Button)findViewById(R.id.first_btn);    btn.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            netTask.runTask();        }    });}@Subscribe(threadMode = ThreadMode.MAIN)public void onEventMainThread(Object object) {    if(object instanceof NetTask){        String result= ((NetTask) object).getResult();        tv.setText(result);    }}@Overrideprotected void onDestroy() {    try{        EventBus.getDefault().unregister(this);    }catch (Exception e){    }    super.onDestroy();}

}
以上代码中,步骤也就是三步:
1、注册EventBus,EventBus.getDefault().register(this);
2、使用注解的方式写订阅函数
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(Object object) {
if(object instanceof NetTask){
String result= ((NetTask) object).getResult();
tv.setText(result);
}
}
3、解注册,

0 0
原创粉丝点击