Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

第 50 章 EventBus

目錄

50.1. 添加 EventBus 依賴到項目Gradle檔案
50.2. 快速開始一個演示例子
50.2.1. 創建 MessageEvent 類
50.2.2. Layout
50.2.3. Activity
50.3. Sticky Events
50.3.1. MainActivity
50.3.2. StickyActivity
50.3.3. MessageEvent
50.3.4. 刪除粘性事件
50.4. 綫程模型
50.5. 配置 EventBus
50.6. 事件優先順序
50.7. 捕獲異常事件

http://greenrobot.org/eventbus

在EventBus中主要有以下三個成員:

	
Event:事件,可以自定義為任意對象,類似Message類的作用;
Publisher:事件發佈者,可以在任意綫程、任意位置發佈Event,已發佈的Evnet則由EventBus進行分發;
Subscriber:事件訂閲者,接收並處理事件,需要通過register(this)進行註冊,而在類銷毀時要使用unregister(this)方法解註冊。每個Subscriber可以定義一個或多個事件處理方法,其方法名可以自定義,但需要添加@Subscribe的註解,並指明ThreadMode(不寫預設為Posting)。	
	
	

50.1. 添加 EventBus 依賴到項目Gradle檔案

Gradle:

			
implementation 'org.greenrobot:eventbus:3.1.1'		
			
		

完整的例子

			
apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "cn.netkiller.eventbus"
        minSdkVersion 26
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'org.greenrobot:eventbus:3.1.1'
}