在我的应用程序中,我有按钮,单击时将查询数据库并在屏幕上显示结果。查询动作通常需要 1 ~ 3 秒。这些按钮会经常被点击。
我已经在 AsyncTask 和 Thread 上实现了这个动作,但几乎没有什么不同。
但是从长远来看,尤其是当按钮被多次点击时,在资源(CPU、内存)方面哪个会更有利?
在我的应用程序中,我有按钮,单击时将查询数据库并在屏幕上显示结果。查询动作通常需要 1 ~ 3 秒。这些按钮会经常被点击。
我已经在 AsyncTask 和 Thread 上实现了这个动作,但几乎没有什么不同。
但是从长远来看,尤其是当按钮被多次点击时,在资源(CPU、内存)方面哪个会更有利?
当您使用 aThread
时,您必须使用该runOnUiThread()
方法更新主线程上的结果,而 anAsyncTask
具有返回onPostExecute()
后在主线程上自动执行的方法。doInBackground()
虽然这两者在“哪个更有益”方面没有显着差异,但我认为AsyncTask
抽象是为了让程序员不必同步 UI 和工作线程而设计的。使用 aThread
时,它可能并不总是像调用那样简单runOnUiThread()
;它会很快变得非常棘手。所以如果我是你,我会坚持使用AsyncTask
并保留Thread
更专业的情况。
AnAsyncTask
用于执行一些后台计算并将结果发布到 UI 线程(带有可选的进度更新)。既然你不关心 UI,那么 a Handler
orThread
似乎更合适。