我有一个非常密集的任务,我解析存储在 Assets 中的大约 100 个 json 文件并从中创建一个树结构.. 然后我根据结果树更新 UI。l
目前,我正在使用 AsyncTask 来完成这项工作。
但是,我正在寻找更好、更高效、更干净的方法来做到这一点。我应该使用的任何库或任何其他内置功能?
最佳答案
我会在这里使用 IntentService
。它已经提供了一个后台线程,一旦完成就会自行停止。如果之后需要更新 UI,可以使用 Handler
或 BroadcastReceiver
。
编辑
您仍然可以使用 AsyncTask
,但仍然从 Service
启动它。 AsyncTask
只是 java 线程的包装器,它不是 Android 组件。您必须从某个上下文启动它,在本例中是 Activity
或 Service
。
如果您从 Activity
启动它,那么您长时间运行的操作将取决于 UI,这在大多数情况下会导致内存泄漏。 Service
是一个独立于 UI 运行的后台组件。此外,Service
将提高您的应用程序的进程优先级,以便在系统内存不足时它不太可能被 Android 杀死。
如果您使用IntentService
,您不再需要AsyncTask
,它已经在后台线程上运行了。如果你想使用常规的 Service
,你需要自己实现后台执行。例如,通过 Java 线程或异步任务。
关于Android - 执行异步任务的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37949509/