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的