在博客《AlertDialog创建过程详解》这篇博客中详细的说了Alert的创建过程,本篇博文就对Dialog的使用的知识点做其他的补充,闲言少叙,书归正传。
1.Dialog的关闭是线程安全的。我们在关闭Dialog的时候是调用dismiss方法来关闭的,这个方法是线程安全的,通过该方法的实现上也可以体现出来:
private final Handler mHandler = new Handler();
private final Runnable mDismissAction = new Runnable() {
public void run() {
dismissDialog();
}
};
public void dismiss() {
//如果不是在UI线程中
if (Thread.currentThread() != mUiThread) {
mHandler.post(mDismissAction);
} else {
mDismissAction.run();
}
}
该方法很简单,Dialog用一个全局变量mUiThread来存储UI线程,该变量在初始化Dialog的时候在Dialog的构造器中完成了初始化。
Dialog(Context context, int theme, boolean crea