執行多項任務,我不知道如何完美地解決了以下任務:同步在Android的
- 我有幾個代碼塊(操作)來執行。
- 每個塊可以返回
true
的false
以指示進一步的執行是可能的。 - 在每個塊的內部,我必須使用異步方法調用(因爲Android是completeley異步的)。
處理操作(如預期不工作中)的實施例:
List<Operation> operations = command.getOperations();
for (Operation operation : operations) {
Log.d(TAG, "Processing operation: " + operation);
OperationResult result = operation.execute(activity);
Log.d(TAG, "Operation result is: " + result);
if (!result.canContinue()) {
break;
}
}
的問題是,操作的內部我需要,例如,顯示AlertDialog並等待輸入。但在撥打dialog.show()
後,我的方法execute
完成並返回不正確的結果。
例的按鈕偵聽的,與AlertDialog registerd低於:
final OperationResult result = new OperationResult();
final class ButtonListener implements DialogInterface.OnClickListener {
public void onClick(DialogInterface dialog, int id) {
switch (id) {
case DialogInterface.BUTTON_POSITIVE: {
result.setCanContinue(true);
}
case DialogInterface.BUTTON_NEGATIVE: {
dialog.cancel();
result.setCanContinue(false);
}
}
}
我應該如何修改操作的處理,以支持Android的異步模式?
實際上處理量可能很大。現在我正在重構我的代碼,因此它將由事件驅動。 – uthark 2010-09-24 15:01:22