1
안드로이드 프로젝트에서 나는 시퀀스를 수행해야하는 foo 함수가 있습니다. foo 내부에서 showDialog를 호출하여 대화 상자를 표시하고 기다리고 싶습니다. 그런 다음 showDialog에서 사용자가 항목을 클릭 할 때 foo 함수에 통보 할 대화 상자처럼 이 표시되어 계속 진행될 수 있습니다. do not do foo가 대화 상자에서 그렇게 지시 할 때까지 실행을 계속하기를 원합니다.안드로이드 : 스레드 동기화 : 대화가 닫히기를 기다리는 중
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;
}
}
는 기본적으로, 나는 전혀 대화 상자가 표시되지 오전 : 지금까지 나는 어떤 이유로 작동하지 않는 것 다음으로 올라와있다. Dial()이 실행되기 전에 wait()가 호출되어 이 호출되기 때문입니다. 다이얼로그가 발신자와 동일한 스레드 인 에서 실행됩니까? 이 코드를 수정하는 방법에 대한 아이디어가 있습니까?
감사합니다,
존 Goche