如何从资产中异步加载大量文件?

How to load a lot of files from assets asynchronously?

我知道它有类似的主题。但是在每个主题中,我们在任务 运行 之前打开 InputStream 并在新线程加载数据。但是我有 90 个资产文件。这是一个单一的创建90AsyncTask的方法吗?我可以在 inBackground() 方法中访问主线程以获取资产并打开新的 InputStream 吗?就我而言,如果我要创建 90 个任务,我还需要同步它们的启动和完成顺序。我需要一个同步点,我的 AsyncTask 将等待主线程。

我的建议是有一个带有 ThreadPool 执行程序的服务并在那里进行加载,您可以有一堆线程 运行 并行进行读取。当你完成后,你会回调到你的 activity,你可以使用广播,或带有回调的活页夹接口。

另一种选择是使用 setRetaininstance(true) 进行片段处理,然后使用 AsyncTasks 或线程池执行程序。

但不要在 activity 中使用异步任务执行此操作,如果用户旋转设备,您可能会有 90 个任务 运行 而没有 activity 到 return 结果为.