2013-04-15 41 views
1

我建立其中I显示在带选项卡的布局的图表几个应用程序中使用androidplot不定进度卡住(不旋转),尽管的AsyncTask

在每个I示出了片段内部的单图表标签(使用的ActionBar标签)。由于渲染速度很慢(我有一系列3000/4000值),所以我试图使用AsyncTask将图形生成放入后台线程中。

它工作正常,但我注意到如果我使用不确定的ProgressBar,指标不旋转,但它仍然是静止的,这意味着有一些进程阻止UI线程。 (我的猜测在这里)。

对于如何改进我的应用程序,您有什么建议吗?我想显示进度的负载指示,而不是仍然文本

这里是的AsyncTask代码,我在那里结束了使用“计算...”消息,而不是一个进度作为一种解决方法:

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 
+0

你开始在比UI线程以外的线程的AsyncTask? –

回答

0

看起来还没有一个完美的解决方案

我最后不得不在活动ProgressBar实例,在每个片段中的另一个实例的活动一个人完全重叠的,然后我就褪色并排出。

的“卡壳”的效果现在是可以忽略不计

+0

谢谢,我会给它一个 – Mirko

1

下面是这听起来像对我说:

默认情况下Androidplot用来渲染为主线,这是对大多数地块有几十点,但包含几千点的地块,因为您已经经历了这一点需要时间。虽然主线程用于渲染绘图,但UI不会更新 - 这包括更新进度条。

设置您的绘图使用后台模式呈现应解决问题。如果你正在使用Androidplot 0.5.1或更高版本可以使背景加给你的阴谋的XML渲染线程:

renderMode="use_background_thread" 

尼克

+0

谢谢,我会给它一个去 – Mirko