allFeeds
シリアル化されたデータを読み取るArrayListとメソッドがあります。
@SuppressWarnings("unchecked")
public void loadFile() {
final String FILENAME = "feeds.ser";
File file = fileContext.getApplicationContext().getFileStreamPath(FILENAME);
try {
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
allFeeds = (ArrayList<Feed>) ois.readObject();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
シリアル化されたデータは、33 個の Feed オブジェクトで構成される 0.49 MB サイズのファイルに保存されます。Feed オブジェクトの構造は次のとおりです。HashMap は最大 900 個のキー ペア値を保持します。
int id;
String name;
int datatype;
String tag;
Long time;
Double value;
String dpInterval;
HashMap<Long, Double> historicFeedData;
データを arraylist に再度ロードするには、かなりの時間がかかります (平均時間は 13.5 秒です)。GC_CONCURRENT は、実行中に繰り返しメモリを解放します。
この操作の速度を上げる方法はありますか、それとも処理するデータの量だけですか? もしそうなら、これを aSyncTask またはバックグラウンド サービスにプッシュすることをお勧めしますか?