Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android 第三方類庫簡單使用之EventBus,androideventbus

Android 第三方類庫簡單使用之EventBus,androideventbus

編輯:關於android開發

Android 第三方類庫簡單使用之EventBus,androideventbus


Android 第三方類庫之EventBus

1 PS

工欲善其事必先利其器. Eventbus也是一款在開發中常用的利器

這篇也對EventBus的簡單介紹和使用,與之前個xutils介紹的級別一樣.http://www.cnblogs.com/greentomlee/p/6025470.html

作者:修雨軒陳 @博客園

2 簡介

開源項目地址:

https://github.com/greenrobot/EventBus

EventBus是一款針對Android優化的發布/訂閱事件總線。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,線程之間傳遞消息.優點是開銷小,代碼更優雅。以及將發送者和接收者解耦。

Eventbus 的發布訂閱(publish/subscribe)

Eventbus 有如下優點:

· simplifies the communication between components

  • decouples event senders and receivers
  • performs well with Activities, Fragments, and background threads
  • avoids complex and error-prone dependencies and life cycle issues

· makes your code simpler (對於程序員而言,可以簡化代碼)

· is fast (執行速度很快)

· is tiny (~50k jar) (類庫的體積很小,大約只有50k)

· is proven in practice by apps with 100,000,000+ installs

· has advanced features like delivery threads, subscriber priorities, etc.

3 環境搭建三部曲

3.1 資源下載

在github中將開源類庫下載到本地:

https://github.com/greenrobot/EventBus

作者提供的很詳細的說明文檔, 我是參考作者的文檔寫出的.在github主頁中也有簡單使用步驟.

http://greenrobot.org/eventbus/documentation/how-to-get-started/

3.2 項目環境搭建

-------------

軟件環境: Android Studio2.3 Beta3

在github中下載下來的eventbus

----------------

首先, 新建一個測試項目: TestEventBus

然後我們觀察一下下載的eventbus的目錄結構,並確定要導入的模塊是哪一個

通過對目錄中的結構分析,我們知道了:

在EventBus-master 下是有3個模塊可以供我們導入項目裡面的。 分別是:EventBus、EventBusAnnotationProcessor、EventBusPerformance。根據編程習慣我們知道:應該導入EventBus目錄。

確定了導入的類庫之後,

在該項目下新建導入的模塊

選擇‘evenbus’ 目錄進行導入。

導入成功之後的結構如下:

接下來就是對build.gradle進行編輯(注意build.gradle文件所在的目錄)

在文件中寫入這句話:

compile project(':EventBus')

這是因為我們模塊名稱就是 EventBus

(build.gradle寫入的依賴類庫的名字應該與導入EventBus之後的模塊名稱 保持一致)

3.3 測試使用

首先描述一下我們要做什麼:

為了對比intent傳遞參數和Event bus 傳遞參數的區別,同時也為了練習使用EventBus , 我們准備了兩個Activity : MainActivity 和SendMsgActivity

首先利用使用傳統的消息傳遞的方式, 將消息從MainActivity發送到SendMsgActivity上;

然後利用Eventbus 再將新的消息從SendMsgActivity傳遞到MainAvtivity上。

PS 利用intent傳遞消息的這部分不在贅述

3.3.1 在接受消息的地方注冊和注銷消息

首先看MainActivity

由於需要接收來自SendMsgActivity的EvenBus消息, 所以需要新建一個實例注冊eventBus,注冊的動作應該寫在onStart()回調函數中.

@Override
protected void onStart() {// 注冊event bus
     super.onStart();
     EventBus.getDefault().register(this);
}

同時檔程序銷毀的時候,也需要注銷:

@Override
protected void onDestroy() {// 注銷eventBus
     super.onDestroy();
     EventBus.getDefault().unregister(this);
}
3.3.2 在發送消息的地方寫發送方法

SendMsgAcitivty 會使用Eventbus 發送消息, 那麼他就是消息發送的地方.

細心的同學發現了, 我並沒有在intent裡面傳遞參數. 而是使用了

ventBus.getDefault().post()

方法類發送消息. 關鍵代碼如下:

sendBtn.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
         EventBus.getDefault().post(new MessageEvent("來, 給你發送一個消息..."));

         Intent intent = new Intent(SendMsgActivity.this, MainActivity.class);
         startActivity(intent);

     }
});

其中 MessageEvent 是自定義個的 實體(結構體\bean)

public class MessageEvent {
     public String msg="";
     public MessageEvent(String msg)
     {
         this.msg = msg ;
     }

     public String getMsg() {
         return msg;
     }

     public void setMsg(String msg) {
         this.msg = msg;
     }
}
3.3.3 在消息接受的地方書寫接受消息的動作

消息接受的地方(MainActivity)中接收消息的方法如下:

/**
  * 處理接受消息的方法  “subscriber methods”
  * 也可以使用注釋
  * @link http://greenrobot.org/eventbus/documentation/how-to-get-started/
  *
  * @param evnt
  */
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(MessageEvent evnt)
{
     String msg = evnt.getMsg();
     //this.showMsgTv = (TextView) findViewById(R.id.tv_printer);
     //this.showMsgTv.setText(msg);
     Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}

出現的效果如圖下:

4 擴展閱讀

EventBus & Otto的使用和比較

http://www.jianshu.com/p/cb39a0018db1

RxJava和EventBus的區別?

https://www.zhihu.com/question/32179258

http://bbs.csdn.net/topics/392007033

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved