【发布时间】:2018-08-25 05:41:15
【问题描述】:
我从一个文件夹中有许多文件,我正在读取这些文件并将其内容存储到数据库中。随后如何使用 RX Java 执行相同的操作?因为我有很多文件要阅读,并且在异步任务中花费了很多时间
String path = "some path";
File directory = new File(path);
File[] files = directory.listFiles();
Log.d(TAG, "Size: " + files.length);
for (int i = 0; i < files.length; i++) {
Log.d(TAG, "FileName -> " + files[i].getName());
//execute async to read file
}
【问题讨论】:
-
RxJava 不会比 AsyncTask 更快。相同的线程内容将在低级别触发。请出示您的 AsyncTask 代码。
-
请把你的异步任务也放上来。
-
请发布您的代码。
-
您可以将同步调用替换为异步调用。正如已经说过的,它不会更快。在读取文件时,您根本不会阻塞 UI 线程。不过,您可以在此处找到并行处理的示例:github.com/ReactiveX/RxJava#parallel-processing。您可以将文件列表划分为“包”,其中文件数等于手机的 CPU 内核数。如果手机有例如2核,可以同时处理2个文件,等到处理结束,取下2个文件,以此类推。这不是微不足道的,但应该是可能的。