我正在嘗試將Android GraphView
項目合併到我的應用程序中,並且每次我都遇到一些奇怪的問題。Android GraphView項目獲得實時更新凍結
我的應用需要從實時數據繪製圖形。我有提供數據的所有通信線程。在主線程中,我讀取這些數據,並簡單地使用mSeries1.appendData(new DataPoint(counter,data[0]),true,100);
,其中counter是int,每次更新後都會遞增。
不幸的是,在某個點它凍結。我試過把它放在區塊中,或者將代碼行改爲mSeries1.appendData(new DataPoint(counter,counter),true,100);
,結果仍然如此。
這是應用程序運行時內存的模樣和結冰時:
沒有人有任何的想法在這裏可能是什麼問題?
編輯:
這是我來更新我的圖形視圖當前的方法:
public void onEventMainThread(ReadingsUpdateData data) {
mSeries1.appendData(new DataPoint(counter,data.getData()[0]),true,100);
counter++;
}
你的答案看起來很合理,但說實話我不知道如何使用它 - 當你想要使用這種方法?據我現在瞭解,當我從我的線程獲取新數據時,我需要在其他方法中更新緩衝區,然後(但是)將其發送到我的圖視圖更新方法。我仍然需要生成新的'DataPoint'對象。 – sebap123
你用新的數據更新你的循環緩衝區,然後調用我在我的答案中陳述的方法來更新圖形。 您仍將生成新的DataPoint對象,但您也將允許垃圾回收器銷燬您從緩衝區「沖洗」出來的所有DataPoint,從而避免任何類型的內存溢出(除非您超大緩衝區)。 –
我已經添加了我的方法代碼,以便您看到。我仍然沒有得到它 - 如果我將'appendData'改爲'buffer.add(new DataPoint(counter,data.getData()[0])); ((DataPoint [])buffer.toArray());'(其中緩衝區是arraylist)我會有某種緩衝區,但我不認爲這是你想的方式。 – sebap123