我有一个名为 Download 的类,它扩展了 AsyncTask。OnPreExecute 方法执行以下操作:
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
this.dialog.setTitle("Check updates...");
this.dialog.show();
}
列出的对话框在类的构造函数中实例化,并具有以下特征:
dialog = new ProgressDialog(activity);
dialog.setCancelable(false);
在 doInBackground 方法中,我将执行大量网络操作,并且每次能够从所需的 url 下载图像时,我都会调用 progress update 方法:
protected void onProgressUpdate(String... values)
// TODO Auto-generated method stub
super.onProgressUpdate(values);
//call the onprogress update
publishProgress("1000");
//do a lot of stuff with the network
}
在 onprogressupdate 中,我将关闭创建的第一个对话框,然后显示另一个:
protected void onProgressUpdate(String... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
if(values[0].equals("1000")){
dialog.dismiss();
progress_brand.show();
progress_brand.setProgress(progress_brand.getProgress()+1);
if(progress_brand.getProgress() == progress_brand.getMax()){
progress_brand.dismiss();
}
}
}
所以基本上:在异步任务开始时,我会显示一个标题为“检查更新”的对话框......然后我将在 doinbackground 方法中搜索这些更新,如果我能找到一些,我将使用发布进度以关闭“旧对话框”并使用 ProgressDialog.STYLE_HORIZONTAL 创建一个新对话框。每次我从网上下载一些东西时,最后一个对话框都会更新。
所以这就是问题所在。如果我使用 eclipse 运行应用程序,然后在下载期间暂停应用程序,一切正常。如果我第二次重新进入应用程序,我可以看到下载继续完美,我可以看到第二个进度条继续按预期自我更新。
但是,如果我制作了一个签名的 apk --> 通过该 apk 安装应用程序 --> 启动应用程序 --> 在下载过程中暂停 --> 重新输入应用程序,然后再次显示第一个对话框并且下载无法正常进行。我从 logcat 中看到,如果我从 eclipse 运行应用程序,onpreexecute 方法只会调用一次,即使我会退出并重新进入应用程序。但是,如果我将通过 apk 安装应用程序,则每次我退出然后重新启动应用程序时都会调用 onpreexecute 方法。
为什么会这样?我已经尝试清理项目和其他基本操作,以查看问题是否是该 apk 的创建,但没有结果。