Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android asynctask中onPause时ProgressDialog被卡住_Android_Android Asynctask_Progressdialog - Fatal编程技术网

Android asynctask中onPause时ProgressDialog被卡住

Android asynctask中onPause时ProgressDialog被卡住,android,android-asynctask,progressdialog,Android,Android Asynctask,Progressdialog,我的Asynctask中有一个ProgressDialog,它从60秒计数到0,然后消失(onPostExecute) 问题是,在60秒内,屏幕通常会关闭-->ON PAUSE 当我打开屏幕时,我的对话框停留在X秒,不会消失 我必须杀了这个应用程序。有办法管理它吗?您可以在活动中覆盖onPause并在那里处理进度对话框。onPause是应用程序失去焦点时发生的事件。在下面的示例中,我使用onPause检查我们失去焦点的原因-如果是因为屏幕超时,我会采取一个行动,如果是因为其他原因(切换应用?),

我的Asynctask中有一个ProgressDialog,它从60秒计数到0,然后消失(onPostExecute)

问题是,在60秒内,屏幕通常会关闭-->ON PAUSE

当我打开屏幕时,我的对话框停留在X秒,不会消失


我必须杀了这个应用程序。有办法管理它吗?

您可以在活动中覆盖onPause并在那里处理进度对话框。onPause是应用程序失去焦点时发生的事件。在下面的示例中,我使用onPause检查我们失去焦点的原因-如果是因为屏幕超时,我会采取一个行动,如果是因为其他原因(切换应用?),我会采取另一个行动

@TargetApi(20)
    @SuppressWarnings("deprecation")
    @Override
    public void onPause(){
        PowerManager pm =(PowerManager) getSystemService(Context.POWER_SERVICE);
        Boolean screenOn = Build.VERSION.SDK_INT < 20 ? pm.isScreenOn() : pm.isInteractive();
        if(!isChangingConfigurations() && screenOn){
            //TODO take action for non screen sleep event
        } else {
            //TODO take action for screen sleep event
        }
        super.onPause();
    }
@TargetApi(20)
@抑制警告(“弃用”)
@凌驾
公共无效暂停(){
PowerManager pm=(PowerManager)getSystemService(Context.POWER\u服务);
布尔screenOn=Build.VERSION.SDK_INT<20?pm.isScreenOn():pm.isInteractive();
如果(!isChangingConfigurations()&&screenOn){
//TODO对非屏幕睡眠事件采取操作
}否则{
//TODO对屏幕睡眠事件采取操作
}
super.onPause();
}