两个场景:
- 在应用程序中创建一些常驻的子线程来不定期地执行一些不需要与应用程序界面交互的计算型的任务
- 在应用程序中创建一些子线程来执行一些需要与应用程序界面进交互的计算型任务
场景一解决方案:
HandlerThread类,它可以创建具有消息循环功能的子线程。
场景二解决方案:
异步任务类(AsyncTask),它会在一个子线程中执行计算任务,同时通过主线程的消息循环来获得更新应用程序界面的机会。
需要注意的是:
A. CounterTask类继承于AsyncTask类,因此它也是一个异步任务类;
B. CounterTask类的doInBackground函数是在后台的子线程中运行的,这时候它不可以操作应用程序的界面;
C. CounterTask类的onProgressUpdate和onPostExecute两个函数是应用程序的主线程中执行,它们可以操作应用程序的界面。