1. 程式人生 > >EventBus使用詳解——初步使用EventBus

EventBus使用詳解——初步使用EventBus

前言:EventBus是上週專案中用到的,網上的文章大都一樣,或者過時,有用的沒幾篇,經過琢磨,請教他人,也終於弄清楚點眉目,記錄下來分享給大家。


相關文章:

1、《EventBus使用詳解(一)——初步使用EventBus》

2、《EventBus使用詳解(二)——EventBus使用進階》


一、概述

EventBus是一款針對Android優化的釋出/訂閱事件匯流排。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,執行緒之間傳遞訊息.優點是開銷小,程式碼更優雅。以及將傳送者和接收者解耦。
1、下載EventBus的類庫
原始碼:

https://github.com/greenrobot/EventBus

2、基本使用

(1)自定義一個類,可以是空類,比如:

[java]  view plain  copy
  1. public class AnyEventType {  
  2.      public AnyEventType(){}  
  3.  }  

(2)在要接收訊息的頁面註冊:

[java]  view plain  copy
  1. eventBus.register(this);  

(3)傳送訊息

[java]  view plain  copy
  1. eventBus.post(
    new AnyEventType event);  

(4)接受訊息的頁面實現(共有四個函式,各功能不同,這是其中之一,可以選擇性的實現,這裡先實現一個):

[java]  view plain  copy
  1. public void onEvent(AnyEventType event) {}  
(5)解除註冊
[java]  view plain  copy
  1. eventBus.unregister(this);  
順序就是這麼個順序,可真正讓自己寫,估計還是雲裡霧裡的,下面舉個例子來說明下。

首先,在EventBus中,獲取例項的方法一般是採用EventBus.getInstance()來獲取預設的EventBus例項,當然你也可以new一個又一個,個人感覺還是用預設的比較好,以防出錯。

二、實戰

先給大家看個例子:

當擊btn_try按鈕的時候,跳到第二個Activity,當點選第二個activity上面的First Event按鈕的時候向第一個Activity傳送訊息,當第一個Activity收到訊息後,一方面將訊息Toast顯示,一方面放入textView中顯示。


按照下面的步驟,下面來建這個工程:

1、基本框架搭建

想必大家從一個Activity跳轉到第二個Activity的程式應該都會寫,這裡先稍稍把兩個Activity跳轉的程式碼建起來。後面再新增EventBus相關的玩意。

MainActivity佈局(activity_main.xml)

[html]  view plain  copy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical">  
  6.       
  7.     <Button   
  8.         android:id="@+id/btn_try"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:text="btn_bty"/>  
  12.     <TextView   
  13.         android:id="@+id/tv"  
  14.         android:layout_width="wrap_content"  
  15.         android:layout_height="match_parent"/>  
  16.   
  17. </LinearLayout>  
新建一個Activity,SecondActivity佈局(activity_second.xml)
[html]  view plain  copy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical"  
  6.     tools:context="com.harvic.try_eventbus_1.SecondActivity" >  
  7.   
  8.     <Button   
  9.         android:id="@+id/btn_first_event"  
  10.         android:layout_width="match_parent"  
  11.         android:layout_height="wrap_content"  
  12.         android:text="First Event"/>  
  13.   
  14. </LinearLayout>  
MainActivity.java (點選btn跳轉到第二個Activity)
[java]  view plain  copy
  1. public class MainActivity extends Activity {  
  2.   
  3.     Button btn;  
  4.   
  5.     @Override  
  6.     protected void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         setContentView(R.layout.activity_main);  
  9.   
  10.         btn = (Button) findViewById(R.id.btn_try);  
  11.   
  12.         btn.setOnClickListener(new View.OnClickListener() {  
  13.   
  14.             @Override  
  15.             public void onClick(View v) {  
  16.                 // TODO Auto-generated method stub  
  17.                 Intent intent = new Intent(getApplicationContext(),  
  18.                         SecondActivity.class);  
  19.                 startActivity(intent);  
  20.             }  
  21.         });  
  22.     }  
  23.   
  24. }  
到這,基本框架就搭完了,下面開始按步驟使用EventBus了。

2、新建一個類FirstEvent

[java]  view plain  copy
  1. package com.harvic.other;  
  2. 相關推薦

    EventBus使用——初步使用EventBus

    前言:EventBus是上週專案中用到的,網上的文章大都一樣,或者過時,有用的沒幾篇,經過琢磨,請教他人,也終於弄清楚點眉目,記錄下來分享給大家。 相關文章: 1、《EventBus使用詳解(一)——初步使用EventBus》 2、《EventBus使用詳解(二)——E

    EventBus

    1.前言 EventBus是一款針對Android優化的釋出/訂閱事件匯流排。可以替代廣播、startActivityForResult、Handler、非同步回撥等來實現各元件間、元件與後臺執行緒間的通訊。它的優點是開銷小,程式碼更優雅,以及將傳送者和接收者解耦。 通常我們在使用EventBus的時候都

    Android的EventBus (2.4及最新版3.0)[觀察者模式]

    EventBus使用詳解EventBus是什麼?EventBus是一種釋出者和訂閱者的事件分發模式。我們可以這麼理解,比如我們訂閱的Android Weekly,每當星期一0點這個時候,Androi

    Android greenrobot:EventBus

    1.執行緒模型 (1)POSTING:釋出事件和接收事件在同一個執行緒。  (2)MAIN:不論事件是在哪個執行緒中釋出出來的,該事件處理函式都會在UI執行緒中執行。該方法可以用來更新UI,但是不能處理耗時操作。  (3)BACKGROUND:如果事件是在UI執行緒中釋出出來的,那麼該事件處理函式就會提交到執

    Eventbus ,Activity和fragment通訊,相互發送接收資料

    最近,需要做fragment與activity的互動,但是,又不想使用回撥介面,所以想到了EventBus. 大致瞭解了一下其主要介紹為: 一款針對Android優化的釋出/訂閱事件匯流排。主要功能是替代Intent,Handler,BroadCast在Fr

    Android之事件匯流排EventBus

    顧名思義,AndroidEventBus是一個Android平臺的事件匯流排框架,它簡化了Activity、Fragment、Service等元件之間的互動,很大程度上降低了它們之間的耦合,使我們的程式碼更加簡潔,耦合性更低,提升了我們的程式碼質量。但它能做的卻不僅限於這些

    EventBus使用(二)——EventBus使用進階

    前言:這段時間感覺自己也有點懶了,真是內心有點自責呢,除了工作,也沒做點什麼,EventBus也是一週前總結出來的,只能以寫部落格為名來彌補內心的罪惡感了,集合同事們做的專案,雖然上週開動了,但總感覺大家積極性不高,如何才能做一個合格的管理者,還真是一個考驗。follow y

    EventBus使用(一)——初步使用EventBus

    前言:EventBus是上週專案中用到的,網上的文章大都一樣,或者過時,有用的沒幾篇,經過琢磨,請教他人,也終於弄清楚點眉目,記錄下來分享給大家。相關文章:一、概述EventBus是一款針對Android優化的釋出/訂閱事件匯流排。主要功能是替代Intent,Handler,

    EventBus使用

    private 不能 get layout 繼承 protected 耦合 ide state EventBus是針一款對Android的發布/訂閱事件總線。它可以讓我們很輕松的實現在Android各個組件之間傳遞消息,並且代碼的可讀性更好,耦合度更低。長話短說直接介紹使用

    開源庫之EventBus使用

    簡介 EventBus是一種用於Android的釋出/訂閱事件匯流排。簡化了應用程式內各元件間、元件與後臺執行緒間的通訊。常用於Activity、Fragment和後臺Service之間通訊、傳

    EventBus實現耦,使用

    1,建立一個springboot專案。結構如下: 2,引入jar包 <dependencies> <dependency> <groupId>org.springframework.boot</groupId>

    EventBus 3.0使用

    01 前言 當我們進行專案開發的時候,往往是需要應用程式的各元件、元件與後臺執行緒間進行通訊,比如在子執行緒中進行請求資料,當資料請求完畢後通過Handler或者是廣播通知UI,而兩個Fragment之家可以通過Listener進行通訊等等。當我們的專案越來越複雜,使用I

    EventBus原始碼(二):進階使用

    寫在前面 EventBus是一個Android平臺上基於事件釋出和訂閱的輕量級框架,可以對釋出者和訂閱者解耦,並簡化Android的事件傳遞。 本文是關於EventBus系列文章的第二篇,相關文章有: 如果你對EventBus不瞭解,我建議先閱讀該系列

    Android EventBus使用

    目錄(?)[+] 轉載請表明出處:http://blog.csdn.net/lmj623565791/article/details/40794879,本文出自:【張鴻洋的部落格】 1、概述 最近大家面試說經常被問到EventBus,github上果斷down了一份,

    EventBus原始碼(一):基本使用

    寫在前面 對於Android程式設計師來說,相信大家都聽過EventBus的大名。EventBus是一個Android平臺上基於事件釋出和訂閱的輕量級框架,可以對釋出者和訂閱者解耦,並簡化Android的事件傳遞。正如官方介紹其優勢: 簡化了元件之間的通訊

    EventBus使用及元件之間通訊

    概述EventBus是一個Android端優化的publish/subscribe訊息事件匯流排,簡化了應用程式內各元件間、元件與後臺執行緒間的通訊。如何使用(eg:A activity 向 B activity傳遞資訊)1.定義一個訊息類Mesage該類是一個JavaBea

    Guava中EventBus的使用和

    概述         EventBus是Google Guava庫中一個常用的元件。他使用了設計模式中的Observer(觀察者)模式,實現了一個publish/subscribe模型的訊息匯流排,簡化了各元件之間之間的通訊。         Observer模式是比較常

    EventBus 3.0的用法

    基本用法 註冊   舉個例子,你需要在一個activity中註冊eventbus事件,然後定義接收方法,這和Android的廣播機制很像,你需要首先註冊廣播,然後需要編寫內部類,實現接收廣播,然後操作UI,在EventBus中,你同樣需要這麼做。 @Override protected void onCre

    Android EventBus 使用

    概述 EventBus是一個Android端優化的publish/subscribe訊息匯流排,它簡化了應用程式內各元件間、元件與後臺執行緒間的通訊。比如請求網路,等網路返回時通過Handler或Broadcast通知UI,兩個Fragment之間需要通過Li

    Android訊息傳遞之EventBus 3.0使用(轉載)

    前面兩篇不僅學習了子執行緒與UI主執行緒之間的通訊方式,也學習瞭如何實現元件之間通訊,基於前面的知識我們今天來分析一下EventBus是如何管理事件匯流排的,EventBus到底是不是最佳方案?學習本篇知識之前建議先回顧一下前兩篇知識:Android訊息傳遞