app正在显示一个进度条(dialog),如果按了电源键,屏幕关闭,app进入后台运行,然后任务完成,调用api隐藏进度条(dialog),之后,再按电源键,点亮屏幕,会发现app的进度条(dialog)还是在的,就是说,屏幕关闭时调用api隐藏进度条并未实现隐藏的目的,为了解决这个问题,需要在onResume中判断这个dialog还是否还显示着。
在activity里的onResume方法里面,怎么判断当前用户看到的是否这个进度条(dialog)? 或者说怎么得到最顶层的窗口是什么
app正在显示一个进度条(dialog),如果按了电源键,屏幕关闭,app进入后台运行,然后任务完成,调用api隐藏进度条(dialog),之后,再按电源键,点亮屏幕,会发现app的进度条(dialog)还是在的,就是说,屏幕关闭时调用api隐藏进度条并未实现隐藏的目的,为了解决这个问题,需要在onResume中判断这个dialog还是否还显示着。
在activity里的onResume方法里面,怎么判断当前用户看到的是否这个进度条(dialog)? 或者说怎么得到最顶层的窗口是什么
@Override
protected void onResume() {
super.onResume();
// 获取WindowManager
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
// 获取当前显示的窗口
View topView = windowManager != null ? windowManager.getDecorView().getRootView() : null;
// 判断最顶层的窗口是什么
if (topView != null && topView.getContext() instanceof Activity) {
Activity topActivity = (Activity) topView.getContext();
if (topActivity == this) {
// 当前Activity处于最顶层,可以进行相应操作
// 判断进度条是否显示,并进行相应处理
}
}
}