我的Asynctask中有一个ProgressDialog,从60秒到0,然后消失(onPostExecute)
问题在于,在60秒内,屏幕调低是常见的 - >的onPause
当我打开屏幕时,我的对话框被卡住了X秒,并且不会消失。
我必须杀死app。有办法管理吗???
答案 0 :(得分:0)
您可以在活动中覆盖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();
}