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將自動設置執行範圍。這樣,您的訂閱者就可以查詢失敗事件的執行範圍,並根據它做出反應。
由於作者水平有限,語言描述及代碼實現中難免有紕漏,望各位看官多提寶貴意見!
Hello , World !
感謝所有!