1. 程式人生 > >Android-->EventBus 3.0新版使用說明(及其使用方法)

Android-->EventBus 3.0新版使用說明(及其使用方法)

當你來到此處, 你應該已經知道了EventBus是幹嘛的了吧? (不知道的自行百度….)
我就不闡述了, 說說區別和使用方法吧!

EventBus 在新版(3.0beta)中取消了原來(2.+)的使用方式:

public void onEvent(MessageEvent event) {
    log(event.message);
}
public void onEventMainThread(MessageEvent event) {
    textField.setText(event.message);
}
public void onEventBackgroundThread
(MessageEvent event){ saveToDisk(event.message); }

變成了:

@Subscribe(threadMode = ThreadMode.MainThread) //在ui執行緒執行
public void onUserEvent(UserEvent event) {
}
@Subscribe(threadMode = ThreadMode.BackgroundThread) //在後臺執行緒執行
public void onUserEvent(UserEvent event) {
}
@Subscribe(threadMode = ThreadMode.Async) //強制在後臺執行
public void onUserEvent(UserEvent event) { }
@Subscribe(threadMode = ThreadMode.PostThread) //預設方式, 在傳送執行緒執行
public void onUserEvent(UserEvent event) {
}

1:EventBus 的簡單使用:

//在Activity中,註冊和反註冊(通用的寫法)
@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   EventBus.getDefault().register(this
); //第1步: 註冊 } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this);//反註冊 } //在註冊了的Activity中,宣告處理事件的方法 @Subscribe(threadMode = ThreadMode.BackgroundThread) //第2步:註冊一個在後臺執行緒執行的方法,用於接收事件 public void onUserEvent(ClassEvent event) {//引數必須是ClassEvent型別, 否則不會呼叫此方法 } //----------華麗的分割線--------------- //在任意地方,呼叫傳送事件 EventBus.getDefault().post(new ClassEvent());//第3步: 傳送事件 //----------華麗的分割線--------------- //在任意地方,註冊事件類 public static class ClassEvent{ } //定義一個事件, 可以不包含成員變數,和成員方法 //當然你也可以定義包含成員變數的事件, 用來傳遞引數 public class MsgEvent { public String jsonData; public MsgEvent(String jsonData) { this.jsonData = jsonData; } }

2:Sticky事件的使用
之前說的使用方法, 都是需要先註冊(register), 再post,才能接受到事件;
如果你使用postSticky傳送事件, 那麼可以不需要先註冊, 也能接受到事件.

首先,你可能需要宣告一個方法:

//注意,和之前的方法一樣,只是多了一個 sticky = true 的屬性.
@Subscribe(threadMode = ThreadMode.MainThread, sticky = true)
public void onEvent(MsgEvent event){
}

其次, 你可以在沒有register的情況下:(傳送事件)

EventBus.getDefault().postSticky(new MsgEvent("With Sticky"));

之後, 再註冊,這樣就可以收到剛剛傳送的事件了:

EventBus.getDefault().register(this);//註冊之後,馬上就能收到剛剛postSticky傳送的事件

3:引數說明:

/**
 * threadMode 表示方法在什麼執行緒執行   (Android更新UI只能在主執行緒, 所以如果需要操作UI, 需要設定ThreadMode.MainThread)
 * sticky     表示是否是一個粘性事件   (如果你使用postSticky傳送一個事件,那麼需要設定為true才能接受到事件)
 * priority   優先順序                 (如果有多個物件同時訂閱了相同的事件, 那麼優先順序越高,會優先被呼叫.)
 * */
@Subscribe(threadMode = ThreadMode.MainThread, sticky = true, priority = 100)
public void onEvent(MsgEvent event){
}

至此: 文章就結束了,如有疑問: QQ群:274306954 歡迎您的加入.

相關推薦

Android-->EventBus 3.0新版使用說明(及其使用方法)

當你來到此處, 你應該已經知道了EventBus是幹嘛的了吧? (不知道的自行百度….) 我就不闡述了, 說說區別和使用方法吧! EventBus 在新版(3.0beta)中取消了原來(2.+)的使用方式: public void onEvent(Me

EventBus 3.0: 入門使用及其使用 完全解析

ring 接收 ret .get parent tro eve cte idt 前言 EventBus是greenrobot再Android平臺發布的以訂閱-發布模式為核心的開源庫。 EventBus翻譯過來是事件總線意思。可以這樣理解:一個個(event)發送到總線上,

android EventBus 3.0

專案地址: github 地址 eventBus能做什麼?為我們解決什麼問題? 1.通訊,各元件資訊的傳遞,而且是在任何時候,資訊內容可以是簡單的標識,也可以是json資料,等; 2.專案中總有兩個元件藕斷絲連,甚至完全不搭邊;但是從業務邏輯上,介面顯示上做同步處理; 這個時候 eventB

android EventBus 3.0 混淆配置

轉載自:http://blog.csdn.net/yangzs516/article/details/51776576 https://github.com/greenrobot/EventBus   使用的這個庫在github的官網README中沒有寫明相應混淆的配置

Android - Android Studio 3.0去掉方法參數提示

tails 去掉 src img 就是 分享 href 技術分享 方法 升級到3.0之後,最明顯的一個就是在調用方法的時候多了一個參數提示。有利有弊,看著不是很舒服。就想去掉。 提示樣式如下: 去掉提示: 原文地址: https://blog.csdn.net/stud

android gif動畫解決 fresco方法 Android Studio 3.0環境

載入和播放順滑流暢,推薦使用 1、引入fresco 編輯 build.gradle 檔案 dependencies { // 其他依賴 compile 'com.facebook.fresco:fresco:0.12.0' / 在 API < 14 上的機

使用Android Studio 3.0以及新版Gradle轉移舊版專案可能遇到的幾個坑

好久沒有更新部落格了,年底忙的要死,先記錄一下轉移專案需要注意的幾點。 1.一般轉移專案sdk路徑一般不一樣,這時候AS會提示更改,點選“OK”即可,這個比較簡單。 2.提示專案的Gradle沒有配置,是否要下載最新的Gradle,一般使用我們安裝新版AS時已經有了,

Android Studio 3.0整合ButterKnife8.8.1版本出現問題以及解決方法

      新安裝了Android Studio 3.0 ,做專案的時候需要整合ButterKnife,去githd上一看ButterKnife升級到了8.8.1,按著用法整合到了專案中,but 出現了下面的錯誤:Error:(2, 0) Android Gradle plu

Android studio 3.0安裝配置方法圖文教程

本文為大家分享了Android studio安裝與配置,具體內容如下 1、首先下載Android studio安裝包,可以從http://www.android-studio.org/,下載最新版本,這裡採用3.0版本進行演示,對應安裝包為android-studio-ide-171.4408382-win

Android Studio 3.0 無法執行Java程式碼main() 方法的解決方案

Android Studio 升級到3.0 以後發現 執行Java 程式碼中的main()方法的時候grandle 就會報錯的問題解決方法 :開啟工程目錄下的下圖標註的檔案:開啟檔案後 在檔案中新增android.enableAapt2=false最後同步一下 OK!

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

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

Android studio 3.0 引起的 outputFile sync failed:not vaild

-m .apk through version 3.0 put 官網 我們 ready 我們大多使用 android studio 改變生成安裝包命名會用以下方式: applicationVariants.all { variant -> vari

Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f070058 android-studio 3.0 from canary 5 to canary 6

time cat -1 int pre lac patch check caused 我升級android-studio到了3.0 canary 6打包編譯安裝出現如下錯誤: 07-11 13:00:39.523 8913-8913/dcpl.com.myapplic

Android Studio 3.0 下載 使用新功能介紹

card offline sta 主目錄 index 執行 sources message tree 谷歌2017發布會更新了挺多內容的,而且也發布了AndroidStudio3.0預覽版,一些功能先睹為快。(英語一般,有些翻譯不太好) 下載地址 https://dev

Android Studio 3.0 正式版 初體驗

blog ice images 安裝 str ext gradle 空間 文件夾 原來的版本是 2.3 ,一開始安裝,詢問是否需要卸載2.3,猶豫了一下,還是卸載了,硬盤空間吃緊…… 然後一路Next,比較順利。 遇到的幾個問題跟安裝2.

更新Android Studio 3.0碰到的問題

builds enc 是什麽 daemon not led wrap tac strong 更新完後試下運行正在維護的舊項目,出現各種錯誤,因為後來發現問題不在這,所以沒記完整,大概如下: A larger heap for the Gradle daemon is rec

Android Studio 3.0 | Kotlin 測試

appcompat alt super override 測試 edi mas ast nta Google官方支持了,體驗一下。 XML <?xml version="1.0" encoding="utf-8"?> <LinearLayo

手把手教你在Android Studio 3.0上分析內存泄漏

pan style http name ans tle andro edi ont 手把手教你在Android Studio 3.0上分析內存泄漏手把手教你在Android Studio 3.0上分析內存泄漏

android studio 3.0加載其他人項目時的一些配置問題

sdk 一個 studio andro 分享 全局配置 body pro 版本 1 首先確定自己的Android Studio 確實可以正確運行一個project 2 修改 build.gradle: build.gradle 文件有兩個級別

解決Android Studio 3.0導入module依賴後unable to merge index

無法 文件夾 post -i 估計 檢查 gradle 網上 mar 解決Android Studio 3.0導入module依賴後unable to merge index 項目需要使用im, 在項目裏導入了騰訊im的幾個module依賴, 項目無法編譯, 報錯unabl