我有一个在对话框中显示一些可选项目的功能。它看起来像这样:
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 中使用“可运行”是在 ui 上显示子对话框的好主意。