AndroidEventBus新特性:添加粘性事件、不需要手動登出事件匯流排

來源:互聯網
上載者:User

標籤:事件匯流排   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新特性:添加粘性事件、不需要手動登出事件匯流排

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.