在我的应用程序中我有按钮,单击时将查询数据库并在屏幕上显示结果。查询操作通常需要1~3秒。这些按钮会经常点击。
我已经在AsyncTask和Thread上实现了这个动作,但看起来差别很小。
但从长远来看,尤其是在按钮被多次点击时,这在资源(CPU,内存)方面会更有益吗?
答案 0 :(得分:6)
当您使用Thread
时,您必须使用runOnUiThread()
方法更新主线程上的结果,而AsyncTask
具有自动执行的onPostExecute()
方法在doInBackground()
返回后的主线程上。
虽然这两者之间没有显着差异,但更为有益的是#34;我认为AsyncTask
抽象是为了让程序员不必同步UI和&工人线程。使用Thread
时,可能并不总是像调用runOnUiThread()
一样简单;它可以非常快速地变得非常棘手。所以,如果我是你,我会坚持使用AsyncTask
并保持Thread
以获得更专业的情况。
答案 1 :(得分:1)
AsyncTask
用于进行一些后台计算并将结果发布到UI线程(带有可选的进度更新)。由于您不关心用户界面,因此Handler
或Thread
似乎更合适。