2012-02-16 56 views
0

我在webservice中有一個數據連接。在Assynctask中,我每5秒收到一次數據。 數據到達後,我做了新的數據集,並打算生活我剛剛重畫mChartView。在這裏提出我的問題。折線圖重新繪製不會重新生成圖表,只需創建一個新的頂部。當然,2-3分鐘後取出的menmory :(Achartengine重繪

這裏我的代碼:

class GetData extends AsyncTask<Void, String, Void> { 

    private ArrayList<String> Alldata = new ArrayList<String>(); 
    public XYMultipleSeriesDataset datasetOut; 
    public XYMultipleSeriesRenderer mRendererOut; 

    @Override 
    protected Void doInBackground(Void... unused) { 

     Alldata.clear(); 
     Alldata = DataFromWeb.getChartDataNew("&name=XXX", "XXX"); 

     return (null); 
    } 

    @Override 
    protected void onPostExecute(Void unused) { 


     datasetOut = CCChart.getDataSet(getBaseContext(), Alldata); 
     mRendererOut = CCChart.getRendererPortrait(getBaseContext()); 


     Log.d("Debug", "alldatasize: " + Alldata.size()); 
     Log.d("Debug", "dataset " + datasetOut.getSeriesCount()); 

     if (mChartView != null) { 
      mChartView.repaint(); 

      Log.v("CC_trace", "CCChartRepaint"); 

     } else { 

      mChartView = ChartFactory.getLineChartView(getBaseContext(), datasetOut , mRendererOut); 

       layout.addView(mChartView, new LayoutParams(
         LayoutParams.WRAP_CONTENT, getHeight())); 

       Log.v("CC_trace", "CCChartGenerate"); 

     } 




    } 



} 

也許我不是好地方調用重繪():)

圖表圖像1

thx的幫助...

回答

7

在我從來沒有打電話repaint。我只是重建舊

所以這樣的:

@Override 
    protected void onPostExecute(Void unused) { 

    datasetOut = CCChart.getDataSet(getBaseContext(), Alldata); 
    mRendererOut = CCChart.getRendererPortrait(getBaseContext()); 

    Log.d("Debug", "alldatasize: " + Alldata.size()); 
    Log.d("Debug", "dataset " + datasetOut.getSeriesCount()); 

    mChartView = ChartFactory.getLineChartView(getBaseContext(), datasetOut , mRendererOut); 

    layout.removeAllViews(); 
    layout.addView(mChartView, new LayoutParams(LayoutParams.WRAP_CONTENT, getHeight())); 
    Log.v("CC_trace", "CCChartGenerate"); 
} 
+0

THX最後我做這個和工作... – Sherad 2012-02-23 10:54:59