当进程对话框和后台线程活动时,如何处理屏幕方向的变化?我的程序在后台线程中做一些网络活动。在开始之前,它会弹出一个进度对话框。对话框在处理程序上被取消。这一切都很好,除非当对话框打开时屏幕方向发生变化(后台线程正在进行)。此时,应用程序要么崩溃,要么陷入死锁,或者进入一个奇怪的阶段,在所有线程被杀死之前,应用程序根本无法工作。怎样才能优雅地处理屏幕方向的变化?下面的示例代码大致符合我的实际程序所做的工作:public class MyAct extends Activity implements Runnable {
public ProgressDialog mProgress;
// UI has a button that when pressed calls send
public void send() {
mProgress = ProgressDialog.show(this, "Please wait",
"Please wait",
true, true);
Thread thread = new Thread(this);
thread.start();
}
public void run() {
Thread.sleep(10000);
Message msg = new Message();
mHandler.sendMessage(msg);
}
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
mProgress.dismiss();
}
};}我试图在onSaveInstanceState中忽略进度对话框,但这只会防止立即崩溃。后台线程仍在运行,UI处于部分绘制状态。需要杀死整个应用程序才能重新开始工作。
3 回答
当年话下
TA贡献1890条经验 获得超9个赞
- 3 回答
- 0 关注
- 454 浏览
添加回答
举报
0/150
提交
取消