1
在一個android項目中,我有一個函數foo,它需要依次執行操作序列 。在foo內部,我想調用showDialog來顯示一個 對話框並等待。然後從showDialog當用戶點擊一個條目,我會 像對話框通知()foo函數,以便它可以繼續。我不想 希望foo繼續執行,直到對話框告訴它爲止。到目前爲止,我已經 想出由於某種原因似乎不工作如下:Android:線程同步:等待一個對話框關閉繼續
class FooActivity {
synchronized void foo(String param) {
try {
showDialog(DIALOG_SELECT_FOO);
wait();
doNextThing(param);
}
} catch (Exception e) { }
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_SELECT_FOO:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// ...
builder.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
synchronized(FooActivity.this) {
FooActivity.this.notify();
}
}
});
return builder.create();
}
// should never get here
return null;
}
}
基本上,我不是在所有看到的對話框。我認爲這是因爲wait()是 在對話框有機會運行之前被調用。該對話框是否在與呼叫者相同的線程上運行 ?任何想法如何解決這個代碼?
感謝,
約翰Goche的