Android学习笔记---初识eventbus

今天下午没事学习了一下eventbus,写了一个小demo,

总结出来以下几点:

ThreadMode.BACKGROUND ==== 如果发生者处于UI线程中,则转到子线程
ThreadMode.MAIN ==== 始终处于UI线程中


 1 /**
 2  * Created by Administrator on 2017/9/1.
 3  */
 4 
 5 public class MessageEvent {
 6     private String message;
 7     private String name;
 8     private String pass;
 9 
10     public MessageEvent(String message) {
11         this.message = message;
12     }
13     public MessageEvent(String name,String pass) {
14         this.name = name;
15         this.pass = pass;
16     }
17 
18     public String getMessage() {
19         return message;
20     }
21 
22     public void setMessage(String message) {
23         this.message = message;
24     }
25 
26 
27     public String getName() {
28         return name;
29     }
30 
31     public String getPass() {
32         return pass;
33     }
34 }

先建立一个消息处理类

 

在需要接受消息的Activiy界面写下如此方法

1   @Subscribe(threadMode = ThreadMode.BACKGROUND)
2     public void onEvent(MessageEvent event) {
3         //Log.d("harvic", "OnEvent收到了消息:" + event.getMessage());
4         Toast.makeText(this, "你登陆成功了吗,就回来="+event.getName()+",==密码="+event.getPass(), Toast.LENGTH_SHORT).show();
5     }

发送消息

1  butt_ond.setOnClickListener(new View.OnClickListener() {
2             @Override
3             public void onClick(View view) {
4                 EventBus.getDefault().post(new MessageEvent("你要传递的数据"));
5             }
6         });

 

还有一个最重要的地方,不要忘记注册哦

1     protected void onCreate(Bundle savedInstanceState) {
2         super.onCreate(savedInstanceState);
3         setContentView(R.layout.activity_video);
4         EventBus.getDefault().register(this);
5 }

在Activity的onCreate里面注册eventbus,

 

这样就完成了在一个页面中传递消息 

 

接下来我们将在两个不同的页面发送接收数据,

在不同的页面传递消息使用

1 EventBus.getDefault().postSticky(new MessageEvent(userName,userPass));

 

接收消息使用

    /**
     * 发生粘性事件
     * @param messageEvent
     */
    @Subscribe(sticky = true)
    public void XXX(MessageEvent messageEvent) {
        Toast.makeText(this, "你登陆成功了吗,就回来="+messageEvent.getName()+",==密码="+messageEvent.getPass(), Toast.LENGTH_SHORT).show();
    }

 

posted @ 2017-09-01 17:39  纯属浪费8818  阅读(160)  评论(0编辑  收藏  举报