Android Otto架構淺析

來源:互聯網
上載者:User

標籤:今天   turn   get   功能   cli   android   com   onresume   iss   

今天要介紹的是一個Android中使用得比較多的android 事件匯流排 EventBus模式的一個架構Otto。

Otto 官網:http://square.github.io/otto/


一、Android Studio中配置Otto (Eclipse中直接下載jar包匯入)

跟之前介紹的其它的架構一樣,它只須要簡單地在build.gradle中配置以下一行紅色字型就可以

dependencies {
    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
    compile ‘com.android.support:appcompat-v7:19.+‘
    //otto 所須要依賴的包
    compile ‘com.squareup:otto:+‘

}


二、Otto事件匯流排架構淺析

1、為什麼要用Otto架構?

Otto架構的主要功能是協助我們來減少多個類之間的耦合度的(解耦)。

譬如:一個類A和還有一個類B之間。假設A要操作B中的某個方法。


傳統的方法:A直接調用B對象的該方法(耦合在一起)

事件匯流排機制:A不須要調用B類的方法,而只須要產生並發出 一個“事件通知”, 假設B訂閱了該“事件”

那麼它將會接受到這個事件,做出對應的操作。這樣就被解耦了。


2. Otto架構使用(結合代碼介紹)

Otto架構事實上相對之前的幾個Android開源架構來說。更easy理解。

它主要運用到一個類: Bus類(用於注冊類,登出類。公布事件)

兩個註解: @Subscribe (訂閱)    @Produce (生產)    【都是針對“事件”的註解】




為了方便,我這邊沒有使用兩個類來做這個Demo。 只是假設大家要試的話也能夠,只是記住一點,不管是

公布者類  還是 訂閱者類, 都須要用Bus進行類的注冊,還有登出。

否則將沒法被Bus識別,這樣就無法生效了。

以下的Demo, 僅為了讓大家知道“事件”被產生了之後。post出來,全部訂閱了該事件的類都會接到該事件,接受的先後順序,不由我們控制!

public class MyActivity extends ActionBarActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_my);        findViewById(R.id.button_change).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                BusProvider.getBusInstance().post(new DataChangedEvent("this is changed String"));//公布事件            }        });    }    @Override    protected void onResume() {        super.onResume();        BusProvider.getBusInstance().register(this);//注冊            }    @Override    protected void onPause() {        super.onPause();        BusProvider.getBusInstance().unregister(this);//登出    }    @Subscribe   //訂閱事件DataChangedEvent    public void sayGoodOnEvent(DataChangedEvent event){        Log.e("event", "good");    }    @Subscribe  //訂閱事件    public void sayBadOnEvent(DataChangedEvent event){        Log.e("event", "bad");    }    @Produce    //產生事件    public DataChangedEvent produceDataChangedEvent(){        return new DataChangedEvent("this is changed String");    }}

Android Otto架構淺析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.