編輯:關於Android編程
程序運行輸出日志如下
EventBus.getDefault().register(this); 意思是注冊當前界面所有方法
EventBus.getDefault().post("Hello EventBus"); 意思是尋找當前界面參數為一個的方法並且是被@Subscribe注解,並執行此方法。當執行發送事件post在線程1裡執行,那麼事件方法也在線程1裡執行.
聲明:定義事件方法必須是public,不能有使用修飾符否則會報錯。
2.線程模型模式
在EventBus的事件處理函數中需要指定線程模型,即指定事件處理函數運行所在的線程。EventBus中通常有四種線程模型,分別是PostThread(默認)、MainThread、BackgroundThread與Async。
PostThread:如果使用事件處理函數指定了線程模型為PostThread,那麼該事件在哪個線程發布出來的,事件處理函數就會在這個線程中運行,也就是說發布事件和接收事件在同一個線程。
MainThread:如果使用事件處理函數指定了線程模型為MainThread,那麼不論事件是在哪個線程中發布出來的,該事件處理函數都會在UI線程中執行。該方法可以用來更新UI,但是不能處理耗時操作。
BackgroundThread:如果使用事件處理函數指定了線程模型為BackgroundThread,那麼如果事件是在UI線程中發布出來的,那麼該事件處理函數就會在新的線程中運行,如果事件本來就是子線程中發布出來的,那麼該事件處理函數直接在發布事件的線程中執行。在此事件處理函數中禁止進行UI更新操作。
Async:如果使用事件處理函數指定了線程模型為Async,那麼無論事件在哪個線程發布,該事件處理函數都會在新建的子線程中執行。同樣,此事件處理函數中禁止進行UI更新操作。
接下來請看示例
輸出日志如下:
發送事件在新的一個線程中執行
輸出日志如下:
3.事件優先接收proiority使用
Android自定義控件系列三:如何畫畫
前面章節我們說了如何定義屬性、如何定義寬高,這樣之後組件的簡單外形或輪廓就已經出來,或者說已經定義出了畫布的大小,解下來就是如何在畫布上揮毫潑墨了。組件(除了容器組件)實
android 日常迭代與維護總結二
android 迭代開發中陸續遇到各種問題,我們要善於總結,歸類。現在記錄一下這幾個月遇到的問題匯總。1、android fragment中onActivityResul
Android 對話框sweet-alert-dialog
android原生的dialog太生硬了,之前看到了這個效果非常不錯但是沒有用過,今天給別人推薦使用,他遇到了問題,導入後錯誤非常多,也沒有庫工程。於是自己認真看了一下,
android——從打電話這個例子看android點擊事件的3種處理方式
一、程序運行效果圖: 二、代碼實現 1、main.xml 2、MainActivity 1