在我的应用程序中,我需要在应用程序启动时加载一些文件。我有6个不同的文件,其中包含int数组,我需要尽快读取它们。其中3个内容为80K整数,其他为200K整数
这是我用来从文件
读取int数组的方法public static int[] loadByMappedBuffer(Context context, String filename) throws IOException{
FileInputStream fis = context.openFileInput(filename);
FileChannel ch = fis.getChannel();
MappedByteBuffer mbuff = ch.map(MapMode.READ_ONLY, 0, ch.size());
IntBuffer ibuff = mbuff.asIntBuffer();
int[] array = new int[ibuff.limit()];
ibuff.get(array);
fis.close();
ch.close();
return array;
}
如您所见,我正在使用nio来读取数组。 这是测试结果,当我重新编写单个文件时,内容为80K整数
因此对于单次阅读它可以正常工作,但是当我正在阅读所有6个文件(我在上面提到过)时,结果将会跟随
首先,我不明白为什么缓存在第一次阅读后没有开始,就像在PC上一样。
此时我有2个想法
我听说Async Task就像线程一样,它对我的目的有用吗?
任何想法将不胜感激。提前致谢
答案 0 :(得分:2)
线程不仅用于并行计算,它们还用于更好的用户体验,因此用户在后台执行操作时仍可以与应用程序进行交互。 AsyncTask非常好,但如果你的时间很短,正确编写的简单线程应该更快。
现在,如果应用程序加载文件,您可以部分(例如每个文件的10%)执行此操作,显示这些部分,并继续在后台加载其余部分。
我认为尝试更快地阅读是错误的方向,因为这是非常依赖硬件的。无论你怎么努力,一些设备都会很慢。考虑一下适用于所有情况的用户体验。
希望有所帮助