[Android] Android RxBus 用法學習總結
阿新 • • 發佈:2019-04-15
pri per 之間 text his 接口 實現 href say
事件總線的好處在於方便組件之間的交互,RxBus不是一個庫,而是使用RxJava實現事件總線的一種思想。
rxbus和eventbus相比較:
RxJava 主要做異步、網絡的數據處理,強大之處就是對數據的處理了,而對於處理完後的數據處理是一樣的都是觀察者模式來通知,也可以把 RxJava 進一步封裝出一個 EventBus(RxBus) 庫,二者可以轉換的。
EventBus比較適合僅僅當做組件間的通訊工具使用,主要用來傳遞消息。使用EventBus可以避免搞出一大推的interface,僅僅是為了實現組件間的通訊,而不得不去實現那一推的接口。
如何使用:
一、添加依賴app\build.gradle
compile ‘com.hwangjr.rxbus:rxbus:2.0.0‘
二、Activity調用
1)使用方式有兩種,直接使用com.hwangjr.rxbus.RxBus或者使用單例模式得到一個對象
public static final class RxBus{ private static Bus mBus; public static synchronized Bus getInstance(){ if(mBus == null){ mBus = new Bus(); }return mBus; } }
2)register和unregister
要在onCreate 和 onDestory 中相繼:
RxBus.get().register(this);
RxBus.get().unregister(this);
如果是在Fragment中類似處理即可!
3)發送和接收
本次只演示註解方式實現的發送和接收
詳見代碼:
package com.jack.testmd; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.Toast; import com.hwangjr.rxbus.RxBus; import com.hwangjr.rxbus.annotation.Subscribe; import com.hwangjr.rxbus.annotation.Tag;public class TestRxbusActivity extends AppCompatActivity { private final String TAG1 = "eat"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_rxbus); RxBus.get().register(this); initData(); } private void initData() { RxBus.get().post(this); //方式1)無tag 無參數監聽 RxBus.get().post(TAG1, this); //方式2)tag 無參數監聽 RxBus.get().post("say", "aaa"); //方式3)有tag,有參數 } @Subscribe public void some(Object obj) { Toast.makeText(getApplicationContext(), "some some~", Toast.LENGTH_LONG).show(); } @Subscribe(tags = {@Tag(TAG1)}) public void eat(Object obj) { Toast.makeText(getApplicationContext(), "eat~", Toast.LENGTH_LONG).show(); } //失敗 ,Produce 發送測試 無效 // @Produce(tags = {@Tag("say")}) // public String send1(){ // return "say"; // } @Subscribe(tags = {@Tag("say")}) public void say(Object obj) {//此處obj為發送過來的參數 aaa Toast.makeText(getApplicationContext(), "rec:"+ obj.toString(), Toast.LENGTH_LONG).show(); } @Override protected void onDestroy() { RxBus.get().unregister(this); super.onDestroy(); } }
本博客地址: wukong1688
本文原文地址:https://www.cnblogs.com/wukong1688/p/10708413.html
轉載請著名出處!謝謝~~
[Android] Android RxBus 用法學習總結