我创建涉及从文件中读取数据的应用程序。 该文件比较大(1.8 MB),并正从的onCreate异步线程读取。 应用程序启动后的第一次,它加载就好了。 但是,如果您单击后退按钮,然后再加载它,它运行的内存和崩溃(抛出内存溢出错误)。
我如何得到它使用的最低内存量可能和/或免费的内存,当它完成?
文件读出代码(在执行doInBackground()
异步类的方法):
public ArrayList<String> createDataList() {
dataList = new ArrayList<String>();
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(getAssets().open(
"text.txt")));
String data;
while ((data = br.readLine()) != null) {
dataList.add(data);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close(); // stop reading
} catch (IOException ex) {
ex.printStackTrace();
}
}
return dataList;
}
编辑*异步类:
private class loadData extends AsyncTask<Void, Void, ArrayList<String>> {
@Override
protected ArrayList<String> doInBackground(Void... arg0) {
dataList = createDataList();
return dataList;
}
protected void onPostExecute(ArrayList<String> result) {
super.onPostExecute(result);
// display first element in ArrayList in TextView as a test
}
}
我试图分裂基础上我要如何组织数据并从每个文本文件中的数据存储到一个独立的文件ArrayList
,但我不得不与记忆问题为好。 我还存储所有的数据到一个“主” ArrayList
然后调用在该“主”的方法,将数据添加到适当ArrayList
(删除/从“主”清除数据,只要它复制)。
如何简化和降低内存的影响任何想法?
编辑**
logcat的:
这是当您单击后退按钮,然后再加载活动。 下面只是所产生的消息中的一个(在详细):