当前位置 : 主页 > 手机开发 > android >

android – 为什么从后台线程中解除ProgressDialog时没有抛出异常?

来源:互联网 收集:自由互联 发布时间:2021-06-11
我知道当我尝试在后台线程上显示ProgressDialog时抛出异常无法在未调用Looper.prepare()的线程内创建处理程序, 因为我们正在尝试从后台线程修改UI.但是当我们在后台线程中忽略该对话框时
我知道当我尝试在后台线程上显示ProgressDialog时抛出异常无法在未调用Looper.prepare()的线程内创建处理程序,

因为我们正在尝试从后台线程修改UI.但是当我们在后台线程中忽略该对话框时,不会抛出任何异常.为什么我们在后台线程中关闭对话框时没有抛出异常,因为我们也是后台线程中的modifyng UI.

谢谢

这是Dialog的dismiss()方法的代码,显示了为什么没有抛出异常和dismiss的工作原理:

/**
 * Dismiss this dialog, removing it from the screen. This method can be
 * invoked safely from any thread.  Note that you should not override this
 * method to do cleanup when the dialog is dismissed, instead implement
 * that in {@link #onStop}.
 */
public void dismiss() {
    if (Thread.currentThread() != mUiThread) {
        mHandler.post(mDismissAction);
    } else {
        mDismissAction.run();
    }
}
网友评论