Android - Thread 和 AsyncTask 之间的区别?

Android - Difference between Thread and AsyncTask?

在我的应用程序中,我有按钮,单击时将查询数据库并在屏幕上显示结果。查询动作通常需要 1 ~ 3 秒。这些按钮会经常被点击。

我已经在 AsyncTask 和 Thread 上实现了这个动作,但发现差别不大。

但是从长远来看,尤其是当按钮被多次点击时,在资源(CPU、内存)方面会更有利?

AsyncTask 用于进行一些后台计算并将结果发布到 UI 线程(带有可选的进度更新)。既然您不关心 UI,那么 HandlerThread 似乎更合适。

参考:Handler vs AsyncTask vs Thread

当您使用 Thread 时,您必须使用 runOnUiThread() 方法在主线程上更新结果,而 AsyncTask 具有 onPostExecute() 方法在 doInBackground() returns.

之后自动在主线程上执行

虽然这两者在 "which is more beneficial" 方面没有显着差异,但我认为设计 AsyncTask 抽象是为了让程序员不必同步 UI & 工作线程。当使用 Thread 时,它可能并不总是像调用 runOnUiThread() 那样简单;它会很快变得非常棘手。所以如果我是你,我会坚持使用 AsyncTask 并在更特殊的情况下保留 Thread