进度对话框冻结。我们必须添加一个动态布局,所以我们从onPost调用它,(在调用doInBackground时发生错误,所以我们从opPost调用它)但是现在加载那个布局时进度对话框会冻结。
请帮助......
我创建了一个单独的类并调用了该类方法
protected void onPostExecute(Void unused)
{
eLayout=new ExcelLayout(viewScreenActivity);
eLayout.LinearLayoutXLSView(ROW_HEIGHT, COL_WIDTH, ROW_Title_Width,NUM_COLS, NUM_ROWS, cols, rows, data);
progressdialog.dismiss();
}
进度对话框冻结并在任务完成后消失。
答案 0 :(得分:1)
当有一个巨大的进程(例如在主UI线程中绘制视图时)会引发此问题。进度对话框是非常轻量级的过程,当一些其他过程优先时,它们只是停在那里而不旋转(简单),这使它看起来像是挂起了。但实际的原因是,还有一些其他过程比显示进度对话更优先。
在您的情况下,视图创建优先。所以你需要做的是,在开始绘制布局之前关闭对话框。
但是,如果您正在寻找一种在绘制视图时显示进度对话框的方法,那么根据我迄今为止的经验,我担心这是不可能的。
修改强>
很明显,你的主UI做了很多工作。你可以尝试这个,但我不知道这会有多大作用。您可以使用dismiss侦听器并从那里调用方法,而不是仅在progressdialog.dismiss()之后立即调用方法。例如,
progressDialog.setOnDismissListener(new OnDismissListener(){
public void onDismiss(DialogInterface dialog) {
eLayout=new ExcelLayout(viewScreenActivity);
eLayout.LinearLayoutXLSView(ROW_HEIGHT, COL_WIDTH, ROW_Title_Width,NUM_COLS, NUM_ROWS, cols, rows, data);
}});
因此只有在进度对话框的progressdialog.dismiss();叫做。所以它应该可行。