怎么判断视图是dismiss过来的

2025-05-09 06:25:31
推荐回答(1个)
回答1:

查看dialog.hide()的注释:
Hide the dialog, but do not dismiss it。
说明只是隐藏dialog视图,并没有把视图移走。
查看hide的源码你会发现:
/**
* Hide the dialog, but do not dismiss it.
*/
public void hide() {
if (mDecor != null) {
mDecor.setVisibility(View.GONE);
}
}
只是把视图设为了GONE。
再看dismiss()方法:
void dismissDialog() {
if (mDecor == null || !mShowing) {
return;
}

if (mWindow.isDestroyed()) {
Log.e(TAG, "Tried to dismissDialog() but the Dialog's window was already destroyed!");
return;
}

try {
mWindowManager.removeView(mDecor);
} finally {
if (mActionMode != null) {
mActionMode.finish();
}
mDecor = null;
mWindow.closeAllPanels();
onStop();
mShowing = false;

sendDismissMessage();
}
}

是整个结束掉这个视图,会调用onStop()。

通常我们都是调用dismiss,hide这个估计是短暂消失使用的吧