在我的应用程序中,我有按钮,单击后将查询数据库并在屏幕上显示结果。查询 Action 通常需要1到3秒。这些按钮将非常经常被点击。
我已经在AsyncTask和Thread上实现了此操作,但是看到的差别很小。
但是,从长远来看,特别是当多次单击按钮时,就资源(CPU,内存)而言,这将是更加有益的?
最佳答案
使用Thread
时,必须使用runOnUiThread()
方法更新主线程上的结果,而AsyncTask
具有onPostExecute()
方法,该方法会在doInBackground()
返回后自动在主线程上执行。
虽然这两者在“更有益”方面没有显着差异,但我认为AsyncTask
抽象是经过设计的,以便程序员不必同步UI和工作线程。当使用Thread
时,它可能并不总是像调用runOnUiThread()
一样简单。它很快就会变得非常棘手。因此,如果您是我,我会坚持使用AsyncTask
并保留Thread
以用于更特殊的情况。