Android 不确定进度条卡住(未旋转),尽管执行了异步任务
我构建了一个应用程序,在该应用程序中,我使用library以选项卡式布局(使用ActionBar选项卡)显示多个图表 在每个选项卡上,我在片段中显示一个图表。由于切换选项卡时渲染速度非常慢(我有一系列3000/4000值),因此我尝试使用AsyncTask将图形生成放在后台线程中 它工作正常,但我注意到,如果我使用不确定的ProgressBar,指示器不会旋转,但仍然保持不变,这意味着有一些进程阻塞了UI线程。(我猜在这里) 你对如何改进我的申请有什么建议吗?我想将ProgressBar显示为加载指示器,而不是静态文本 下面是AsyncTask代码,在这里我使用了“计算…”消息而不是ProgressBar作为解决方法:Android 不确定进度条卡住(未旋转),尽管执行了异步任务,android,android-asynctask,androidplot,Android,Android Asynctask,Androidplot,我构建了一个应用程序,在该应用程序中,我使用library以选项卡式布局(使用ActionBar选项卡)显示多个图表 在每个选项卡上,我在片段中显示一个图表。由于切换选项卡时渲染速度非常慢(我有一系列3000/4000值),因此我尝试使用AsyncTask将图形生成放在后台线程中 它工作正常,但我注意到,如果我使用不确定的ProgressBar,指示器不会旋转,但仍然保持不变,这意味着有一些进程阻塞了UI线程。(我猜在这里) 你对如何改进我的申请有什么建议吗?我想将ProgressBar显示为加
private class AsyncPlotTask extends AsyncTask<XYPlot, Void, Boolean> {
@Override
protected void onPreExecute() {
//show loading message only
loading.setVisibility(View.VISIBLE);
dataContainer.setVisibility(View.GONE);
}
@Override
protected Boolean doInBackground(XYPlot... plot) {
boolean success = true;
plot[0].addSeries(dataSeries, dataSeriesFormat);
return success;
}
@Override
protected void onPostExecute(Boolean result) {
//hide loading message and show graph
loading.setVisibility(View.GONE);
dataContainer.setVisibility(View.VISIBLE);
}
}//AsyncPlotTask
私有类AsyncPlotTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
//仅显示加载消息
加载.setVisibility(视图.VISIBLE);
dataContainer.setVisibility(View.GONE);
}
@凌驾
受保护的布尔doInBackground(XYPlot…plot){
布尔成功=真;
绘图[0]。添加系列(数据系列,数据体验格式);
回归成功;
}
@凌驾
受保护的void onPostExecute(布尔结果){
//隐藏加载消息并显示图形
loading.setVisibility(View.GONE);
dataContainer.setVisibility(View.VISIBLE);
}
}//异步绘图任务
似乎没有完美的解决方案
我在活动中得到了一个ProgressBar实例,每个片段中的另一个实例与活动一完全重叠,然后我将它们淡入淡出
“卡滞”效应现在可以忽略不计了,似乎没有一个完美的解决方案 我在活动中得到了一个ProgressBar实例,每个片段中的另一个实例与活动一完全重叠,然后我将它们淡入淡出
“卡滞”效应现在可以忽略不计了以下是我听到的: 默认情况下,Androidplot使用主线程进行渲染,这对于大多数具有几十个点的绘图来说是好的,但是对于包含几千个点的绘图来说,这需要时间。当主线程参与渲染绘图时,UI不会更新-这包括更新进度条 将绘图设置为使用背景模式渲染应该可以解决此问题。如果您使用的是Androidplot 0.5.1或更高版本,则可以通过将以下内容添加到绘图的xml中来启用背景渲染线程:
renderMode="use_background_thread"
尼克这是我听到的声音: 默认情况下,Androidplot使用主线程进行渲染,这对于大多数具有几十个点的绘图来说是好的,但是对于包含几千个点的绘图来说,这需要时间。当主线程参与渲染绘图时,UI不会更新-这包括更新进度条 将绘图设置为使用背景模式渲染应该可以解决此问题。如果您使用的是Androidplot 0.5.1或更高版本,则可以通过将以下内容添加到绘图的xml中来启用背景渲染线程:
renderMode="use_background_thread"
Nick你是在UI线程以外的线程中启动异步任务吗?你是在UI线程以外的线程中启动异步任务吗?谢谢,我会试试看,我会试试看,我会试试看