2013-04-15 90 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