Android - Thread和AsyncTask之间的区别?

时间:2015-03-07 10:11:04

标签: java android android-asynctask android-handler java-threads

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

我已经在AsyncTask和Thread上实现了这个动作,但看起来差别很小。

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

2 个答案:

答案 0 :(得分:6)

当您使用Thread时,您必须使用runOnUiThread()方法更新主线程上的结果,而AsyncTask具有自动执行的onPostExecute()方法在doInBackground()返回后的主线程上。

虽然这两者之间没有显着差异,但更为有益的是#34;我认为AsyncTask抽象是为了让程序员不必同步UI和&工人线程。使用Thread时,可能并不总是像调用runOnUiThread()一样简单;它可以非常快速地变得非常棘手。所以,如果我是你,我会坚持使用AsyncTask并保持Thread以获得更专业的情况。

答案 1 :(得分:1)

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

参考:Handler vs AsyncTask vs Thread