軟體是做在儀器上的(android 4.4.4, 2g記憶體,定制ROM),有一個需求是每隔0.1s采集一次溫度資料并畫線形圖顯示,資料是以point(float x,float y)的形式放在arraylist里面的。
public class TempValue implements Serializable{
private static final long serialVersionUID = 3939262894532808919L;
private List<Point> valus = new ArrayList<Point>();
public TempValue() {
super();
}
...
}滿載運行下總共有24個這樣的list,目前的做法是以list[6][4]二維陣列形式存放的
TempValue[][] tempValue = new TempValue[6][4];
這24個通道的資料可以切換并查看。
問題是如果程式運行時間短的話沒有問題,但是如果運行8小時以上,會有資料8*3600*10*24的資料就會導致界面卡頓,曲線圖設定的是每333ms重繪一次。
因為每次都持有大量資料(其他資料也有,但主要是溫度資料),界面操作會卡頓,點開有影片的界面直接“程式未回應”
各位大神,有什么方法可以優化嗎?
uj5u.com熱心網友回復:
首先,資料保存到本地資料庫。假設滿屏能顯示10條資料。
首先我們先到資料庫取當前10條,前20條(如果有),后20條
監聽滑動,如果曲線左滑了10條,那么就再去資料庫往前取10條放進去,把曲線的后10條刪掉,以此類推,右劃同理。
這就是復用機制,recyclerview、listview就是按照這個原理來的
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/61209.html
標籤:Android
下一篇:ios馬甲包
