Java 旋转后使用ProgressBar更新ProgressDialog
我的应用程序在线程中处理一些图像,同时显示一个带有进度条的对话框Java 旋转后使用ProgressBar更新ProgressDialog,java,android,progressdialog,android-thread,Java,Android,Progressdialog,Android Thread,我的应用程序在线程中处理一些图像,同时显示一个带有进度条的对话框 progressDialog = new ProgressDialog(Activity.this); progressDialog.setProgressStyle(size); progressDialog.show(); Thread thread = new Thread(new Runnable() { @Override public void run() { for(int i = 0
progressDialog = new ProgressDialog(Activity.this);
progressDialog.setProgressStyle(size);
progressDialog.show();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for(int i = 0; i < size; i++{
//process images
runOnUiThread(new Runnable() {
@Override
public void run() {
progressDialog.setProgress(i);
}
});
}
}
});
thread.start();
在
onCreate
中,我重新创建了对话框。但线程不会更改此新对话框的进度条。旋转后,显示此对话框的活动(或片段)将被丢弃,并创建一个新对话框
在新活动中重新创建对话框,但启动的线程会更新旧活动中的对话框(该线程引用旧对话框的事实也构成内存泄漏)
我建议您执行以下操作:
使用这种方法,您可以将处理逻辑封装在一个特殊的对象中,该对象能够经受旋转,不同的组件可以调用其方法并订阅来自该对象的通知。我对此并不感兴趣,也从未使用过应用程序对象。在设备旋转后,我如何保持ImageProcessor类并订阅通知?@Vasily,用示例代码解释将使一切变得清晰。
@Override
protected void onDestroy() {
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
super.onDestroy();
}