EventBus詳解及簡單例項
EventBus引入
EventBus:
Event bus for Android and Java that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality.
翻譯:適用於Android和Java的事件匯流排,簡化了活動,碎片,執行緒,服務等之間的通訊。減少程式碼,提高質量。
EventBus是Android和Java的釋出/訂閱事件匯流排。
使用優點:
1、簡化了元件之間的通訊
將事件傳送者和接收者分離
在活動,片段和後臺執行緒中良好
避免複雜且容易出錯的依賴關係和生命週期問題
2、使程式碼更簡單
3、很快、很小,具有交付執行緒,使用者優先順序等高階功能。
Event使用有三步
(1) 定義事件
(2) 準備訂閱者:宣告並註釋您的訂閱方法,可選擇指定執行緒模式。註冊和登出您的訂閱者。例如,在Android上,活動和片段通常應根據其生命週期進行註冊
(3) 傳送event。
EventBus案例
實現效果:引入EnentBus,使用EnentBus一個訊息的傳送和接收,在MainActivity上寫一個按鈕和一個TextView,點選MainActivity上的按鈕,跳轉到另一個Activity,在另一個Activity上也有一個按鈕,點選這一個按鈕將訊息寫在MainActivity的TextView上。
先匯入依賴: implementation 'de.greenrobot:eventbus:3.0.0-beta1'
定義一個EventBus的訊息類,寫出 構造方法和get方法
public class EventMessage { private String message; public EventMessage(String message) { this.message = message; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
MainActivity:
public class MainActivity extends AppCompatActivity { @BindView(R.id.activitybutton) Button activitybutton; @BindView(R.id.textView) TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); EventBus.getDefault().register(this); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } //接收訊息 @Subscribe(threadMode = ThreadMode.MainThread) public void onEvent(EventMessage eventMessage){ String message = eventMessage.getMessage(); textView.setText(message); } //按鈕監聽 @OnClick(R.id.activitybutton) public void onViewClicked() { Intent intent = new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); } }
SecondActivity:
public class SecondActivity extends AppCompatActivity { @BindView(R.id.secondActivity) Button secondActivity; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); ButterKnife.bind(this); } @OnClick(R.id.secondActivity) public void onViewClicked() { new Thread( new Runnable() { @Override public void run() { //EventBus傳送訊息 EventBus.getDefault().post(new EventMessage("I want to send a message to MainActivity!我要向MainActivity傳送訊息")); } } ).start(); } }
效果展示:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3137/viewspace-2823166/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- EventBus詳解及原始碼分析原始碼
- Python訪問小程式簡單方法程式碼例項詳解Python
- Oracle minus用法詳解及應用例項Oracle
- axios模擬GET請求例項及詳解iOS
- 元件例項 $el 詳解元件
- Linux與windows檔案傳輸詳解及例項LinuxWindows
- MySQL 序列 AUTO_INCREMENT詳解及例項程式碼MySqlREM
- opengl簡單入門例項
- Spark 簡單例項(基本操作)Spark單例
- WebSocket 簡介及應用例項Web
- 簡單寫一個eventbus
- 簡單跨程式使用EventBus
- 合成複用原則詳解篇(附圖解及原始碼例項)圖解原始碼
- java-單例詳解Java單例
- Java的Socket通訊簡單例項Java單例
- ElasticSearch客戶端簡單操作例項Elasticsearch客戶端
- Spring事務管理(詳解+例項)Spring
- CSS例項詳解:Flex佈局CSSFlex
- 透過程式碼例項簡單瞭解Python sys模組Python
- ubuntu ftp 伺服器搭建及vsftpd.conf配置例項詳解UbuntuFTP伺服器
- Linux IO模式及 select、poll、epoll詳解(含部分例項原始碼)Linux模式原始碼
- 一次RAC例項驅逐詳細分析及解決方案
- C#out引數的簡單例項C#單例
- XML節點自動生成簡單例項XML單例
- 超級簡單入門vuex 小例項Vue
- 淡入淡出效果簡單程式碼例項
- C++學習隨筆——簡單的單例設計模式例項C++單例設計模式
- python單例的使用詳解Python單例
- MySQL共享鎖:使用與例項詳解MySql
- 50個典型電路例項詳解
- PHP7 新增功能詳解(例項)PHP
- 《NetkillerAndroid手札》之EventBus使用詳解Android
- 封裝動態庫dll與靜態庫lib(原理及簡單例項)封裝單例
- 安卓EventBus使用方法,eventbus舉例安卓
- Python簡單函式迴圈綜合例項Python函式
- phpqrcode生成動態二維碼簡單例項PHP單例
- 正規表示式分組例項詳解
- Python程式和執行緒例項詳解Python執行緒