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詳解及原始碼分析原始碼
- 從簡單到複雜:Apache Kafka應用例項詳解ApacheKafka
- Python訪問小程式簡單方法程式碼例項詳解Python
- websocket簡單例項Web單例
- Oracle minus用法詳解及應用例項Oracle
- curl庫pycurl例項及引數詳解
- rman catalog的配置及詳解例項
- curl例項詳解
- sudo 詳解+例項
- python urllib2詳解及例項Python
- C# Timer用法及例項詳解C#
- JEECG 簡單例項講解許可權控制單例
- AWK簡介及使用例項
- 簡單跨程式使用EventBus
- 簡單寫一個eventbus
- MySQL 序列 AUTO_INCREMENT詳解及例項程式碼MySqlREM
- axios模擬GET請求例項及詳解iOS
- Linux NFS典型例項及許可權詳解LinuxNFS
- opengl簡單入門例項
- javascript事件冒泡簡單例項JavaScript事件單例
- Spark 簡單例項(基本操作)Spark單例
- javascript this用法和簡單例項JavaScript單例
- 元件例項 $el 詳解元件
- Crontab例項-命令詳解
- tcl/tk例項詳解——glob使用例解
- iOS 單例詳解iOS單例
- 詳解 - 單例模式單例模式
- js選項卡簡單程式碼例項JS
- WebSocket 簡介及應用例項Web
- Linux與windows檔案傳輸詳解及例項LinuxWindows
- $.ajax()函式用法簡單例項函式單例
- c++類的簡單例項C++單例
- 策略模式與簡單java例項模式Java
- corba程式設計簡單例項ORB程式設計單例
- 並查集例項詳解並查集
- Oracle 例項恢復詳解Oracle
- jQuery實現的簡單投票簡單程式碼例項jQuery
- java-單例詳解Java單例