EventBus之AsyncExecutor

AsyncExecutor

AsyncExecutor類似於線程池,但具有失敗(異常)處理。失敗是拋出異常,AsyncExecutor將把這些異常封裝在一個事件中,該事件將自動發佈。

免責聲明:AsyncExecutor是一個非核心實用程序類。它可能會在後臺線程中爲您節省一些錯誤處理代碼,但它不是一個核心EventBus類。

通常,您調用 AsyncExecutor.create() 來創建一個實例並將其保存在應用程序範圍內。然後要執行某些操作,請實現 RunnableEx接口並將其傳遞給AsyncExecutor的execute方法。與Runnable不同,RunnableEx可能拋出異常。

如果RunnableEx實現拋出異常,它將被捕獲並封裝到 ThrowableFailureEvent 中,該事件將被髮布。

執行示例:

AsyncExecutor.create().execute(
    new AsyncExecutor.RunnableEx() {
        @Override
        public void run() throws LoginException {
            // No need to catch any Exception (here: LoginException)
            remote.login();
            EventBus.getDefault().postSticky(new LoggedInEvent());
        }
    }
);

 接收示例:

@Subscribe(threadMode = ThreadMode.MAIN)
public void handleLoginEvent(LoggedInEvent event) {
    // do something
}

@Subscribe(threadMode = ThreadMode.MAIN)
public void handleFailureEvent(ThrowableFailureEvent event) {
    // do something
}

AsyncExecutor Builder

如果希望自定義AsyncExecutor實例,請調用靜態方法AsyncExecutor.builder()。它將返回一個建造者(builder),它允許您定製EventBus實例、線程池和失敗事件類(customize the EventBus instance, the thread pool, and the class of the failure event.)。

另一個定製選項是執行範圍,它提供失敗事件上下文信息(execution scope, which gives failure events context information)。例如,失敗事件可能只與特定的Activity實例或類相關。

如果您的自定義故障事件類實現了 HasExecutionScope 接口,AsyncExecutor將自動設置執行範圍。這樣,您的訂閱者就可以查詢失敗事件的執行範圍,並根據它做出反應。

 

GitHub地址

由於作者水平有限,語言描述及代碼實現中難免有紕漏,望各位看官多提寶貴意見!

Hello , World !

感謝所有!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章