Android - Thread 和 AsyncTask 之间的区别?
Android - Difference between Thread and AsyncTask?
在我的应用程序中,我有按钮,单击时将查询数据库并在屏幕上显示结果。查询动作通常需要 1 ~ 3 秒。这些按钮会经常被点击。
我已经在 AsyncTask 和 Thread 上实现了这个动作,但发现差别不大。
但是从长远来看,尤其是当按钮被多次点击时,在资源(CPU、内存)方面会更有利?
AsyncTask
用于进行一些后台计算并将结果发布到 UI 线程(带有可选的进度更新)。既然您不关心 UI,那么 Handler
或 Thread
似乎更合适。
参考:Handler vs AsyncTask vs Thread
当您使用 Thread
时,您必须使用 runOnUiThread()
方法在主线程上更新结果,而 AsyncTask
具有 onPostExecute()
方法在 doInBackground()
returns.
之后自动在主线程上执行
虽然这两者在 "which is more beneficial" 方面没有显着差异,但我认为设计 AsyncTask
抽象是为了让程序员不必同步 UI & 工作线程。当使用 Thread
时,它可能并不总是像调用 runOnUiThread()
那样简单;它会很快变得非常棘手。所以如果我是你,我会坚持使用 AsyncTask
并在更特殊的情况下保留 Thread
。
在我的应用程序中,我有按钮,单击时将查询数据库并在屏幕上显示结果。查询动作通常需要 1 ~ 3 秒。这些按钮会经常被点击。
我已经在 AsyncTask 和 Thread 上实现了这个动作,但发现差别不大。
但是从长远来看,尤其是当按钮被多次点击时,在资源(CPU、内存)方面会更有利?
AsyncTask
用于进行一些后台计算并将结果发布到 UI 线程(带有可选的进度更新)。既然您不关心 UI,那么 Handler
或 Thread
似乎更合适。
参考:Handler vs AsyncTask vs Thread
当您使用 Thread
时,您必须使用 runOnUiThread()
方法在主线程上更新结果,而 AsyncTask
具有 onPostExecute()
方法在 doInBackground()
returns.
虽然这两者在 "which is more beneficial" 方面没有显着差异,但我认为设计 AsyncTask
抽象是为了让程序员不必同步 UI & 工作线程。当使用 Thread
时,它可能并不总是像调用 runOnUiThread()
那样简单;它会很快变得非常棘手。所以如果我是你,我会坚持使用 AsyncTask
并在更特殊的情况下保留 Thread
。