今天下午沒事學習了一下eventbus,寫了一個小demo,ide
總結出來如下幾點:post
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界面寫下如此方法this
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 }
發送消息spa
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,code
這樣就完成了在一個頁面中傳遞消息 blog
接下來咱們將在兩個不一樣的頁面發送接收數據,事件
在不一樣的頁面傳遞消息使用get
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(); }