我正在使用 AsyncTask 下载文件。我在那里实现了进度:
//Updating progress dialog
protected void onProgressUpdate(Integer... changed) {
progressDialog.setProgress(changed[0]);
}
//STARTED
@Override
protected void onPreExecute() {
try {
progressDialog = new ProgressDialog(context);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMessage(context
.getString(R.string.message_loading));
progressDialog.setCancelable(false);
progressDialog.show();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
纵向和横向一切正常。为了通知文件已下载,我正在使用界面。
错误的是,当我开始以纵向或横向方式下载文件时,虽然没有完成,但我旋转设备,然后进度消失并回调触发异常,因为无处可去。
当我旋转设备时,我的 Activity 被重新创建,那么如何正确执行此操作。我需要限制下载开始时用户无法旋转设备,那么如何做到这一点。
或者有解决方案吗?
最佳答案
如果您想在下载时限制方向,请在开始下载之前使用此代码。这将限制用户的设备方向。
int current_orientation = getResources().getConfiguration().orientation;
if (current_orientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
您可以在完成方向后使用此代码,允许用户再次旋转设备。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
希望对您有帮助。
关于java - android 旋转时进度消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10713890/