選択可能な項目をダイアログに表示する機能があります。次のようになります。
void showListDialog()
{
if (!_dialogIsOpen) {
_dialogIsOpen = true;
final Activity instance = this;
runOnUiThread(new Runnable()
{
public void run()
{
//Building the List to display
AlertDialog alert = builder.create();
alert.setOnDismissListener(new DialogInterface.OnDismissListener()
{
@Override
public void onDismiss(DialogInterface dialog) {
_dialogIsOpen = false;
}
});
alert.show();
}
});
}
}
ここで、呼び出しをスレッドセーフにしたいと思います。今のところ、「_dialogIsOpen」という名前のブール フィールドでチェックを使用していることがわかります。そのフィールドへのアクセスは同期されていません!
私の質問は、この関数をスレッドセーフにするために何を変更する必要があるかです。また、UiThread で「runnable」を使用することが、UI にサブ ダイアログを表示するのに適している場合。