標籤:事件匯流排 eventbus android
剛看了下作者發布的新版本AndroidEventBus v1.0.4版本,發現加了很多好東東,最大的兩個特性就是添加了粘性sticky事件和無需手動登出事件
AndroidEventBus的github地址為:github
下面是作者給出的粘性sticky事件運用情境,感覺挺給力的,這裡直接粘貼複製了
User.java類 :
// 實體類實現序列化public class User { String name ; String phoneNum; // 其他欄位省略 public User(String aName) { name = aName ; } // 代碼省略 }
首先User類不需要實現序列化介面,避免了那些樣板代碼。然後在MainActivity中直接將User對象作為Sticky事件發布即可。
public class MainActivity extends Activity { // 某個點擊事件 @Override public void onClick(View v) { User aUser = new User("Mr.Simple"); aUser.phoneNum = "123456"; // 其他資料 // 發布Sticky事件 EventBus.getDefault().postSticky(aUser); // 跳轉到ProfileActivity頁面 Intent intent = new Intent(this, ProfileActivity.class); startActivity(intent); }}
最後我們看看ProfileActivity如何接收資料。
public class ProfileActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_profile); // 以Sticky的形式註冊 EventBus.getDefault().registerSticky(this); } @Subscriber private void receiveUser(User info){ // 這裡實現你的邏輯即可, info即為傳遞過來的User對象 }}
在ProfileActivity中我們將ProfileActivity自身作為訂閱者註冊到匯流排當中,此時ProfileActivity就會接收到上面發布的Sticky事件,這個事件對象就是User對象。此時就會觸發ProfileActivity 中的receiveUser函數,info參數就是Sticky事件的那個使用者資訊對象,在receiveUser中實現自己的邏輯即可。
是的!我們並沒有在onDestory中對訂閱者進行登出,也就是沒有調用EventBus的unregister()函數,這就是最新版的特性之一,也是目前唯一不需要手動登出的事件匯流排庫。
這裡需要注意是,粘性Sticky事件需要你手動進行移除!
AndroidEventBus新特性:添加粘性事件、不需要手動登出事件匯流排