有人可以对此有所了解。我应该使用哪个以获得更好的性能?
我想如果你想象一下当你启动一次原生 Thread 和 AsyncTask 时的情况,我认为性能不会有所不同。
如果您不想USER
通过UI
. 在这里,本机线程失败,因为它们与UI
线程不同步,您无法使用它们执行 UI 操作。
另一方面,AsyncTask 将后台工作与 UI 工作相结合,并提供与 UI 同步的方法,并允许通过调用其生命周期的适当方法随时执行 UI 更新。
通常,如果某些任务持续时间超过 5 秒,您应该USER
告知
“正在后台工作,请等到它完成”
当然,这可以通过两种不同的方式实现,但这在很大程度上取决于您的任务的性质 - 如果您需要显示任务的进度(已经下载了多少 MB,复制文件的数量并显示每个正在进行的对话框的名称等等)或者你不这样做(例如,仅使用开始和结束消息在“静默”中创建一些大数据结构)。
所以在我的回答结束时:
我应该使用哪个以获得更好的性能?
我认为您无法得到完全正确的答案,因为每个开发人员都有不同的经验,不同的编码风格。我如何提到,他们的表现没有什么不同。我认为它是相同的(如果您将读取 50 MB 文件,则读取本机线程和 AsyncTask 都不会更快)。这又取决于任务的性质和您的个人选择。
更新:
对于可以持续更长时间的任务,您还可以尝试考虑包API
提供的工具java.util.concurrent
(ThreadPoolExecutor、FutureTask 等)