在应用程序中使用一个HandlerThread
来进行不同的时间花费 Action (例如,排序或什至用于处理Web/文件流)是否是一种好方法?
更好地用于此目的的是:几个AsyncTask
,几个Thread
或一个HandlerThread
,例如
http://hi-android.info/src/android/webkit/WebViewWorker.java.html
?
最佳答案
您必须将耗时的操作(网络,数据库访问等)委派给某些类型的工作线程。阻塞主(UI)线程是 Not Acceptable 。AsyncTask
是一个高级对象。它使用内部Handler
和Executor
来为您处理线程处理和线程间通信。它被设计用于(在非常常见的情况下)在后台执行某些操作并将结果推送到UI。
直接使用Handler
和HandlerThread
(或事件Thread
)可以为您带来更大的灵活性,但需要付出更复杂的代码和一些细微的陷阱(例如How to Leak a Context: Handlers & Inner Classes)。
您做出的一种选择是串行或并行执行任务。 HandlerThread
将序列化它们。对于AsyncTask
,它取决于Android版本(但是可以覆盖)。每次创建Thread
可能会导致并发线程过多。
关于java - 使用几个AsyncTask或HandlerThread(Pipeline Thread)更好?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8912817/