我正在尝试将大量文本加载到我的edittext中。但是,应用程序似乎有点滞后。文字有大约50,000多个字符和大约3000多行。
代码:
try {
InputStream is = new FileInputStream(f);
InputStreamReader reader = new InputStreamReader(is, "UTF-8");
int c;
char[] buffer = new char[1024];
while ((c = reader.read(buffer)) != -1) {
writer.write(buffer, 0, c);
}
reader.close();
is.close();
mTextContent.setText(writer.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
还有其他方法可以有效地完成这项工作吗?
感谢。
答案 0 :(得分:0)
读取50KB的数据需要一些时间,特别是在一次读取1KB时。
不要在主应用程序线程上执行磁盘I / O.请将您的磁盘I / O移动到后台线程,完成后在主应用程序线程上填充EditText
。
另外,请考虑使用比1KB更大的缓冲区。
答案 1 :(得分:-1)
在计算string
内的edittext
后,尝试定期将total size
附加到loop
。
while ((c = reader.read(buffer)) != -1) {
writer.write(buffer, 0, c);
}
这只是猜测..