AsyncTask则相当于现代化的电话系统,接线员的功能被完全封装了。
对于上例,新建更新TextView的类并继承AsyncTack类,如下:
class UpdataTV extends AsyncTask//AsyncTask的泛型,第一个参数是要传递给任务的参数,第一个参数是在主线程更新的参数,第三个参数是线程执行完毕的返回值 { @Override protected void onProgressUpdate(Integer... values) { //如后台运行的进度信息要在主线程显示,则在此体现 } @Override protected Boolean doInBackground(Void... params) { //后台(新线程)运行的代码 return true; } @Override protected void onPostExecute(Boolean aBoolean) { //后台执行完毕时,在主线程运行的代码 tv.setText("changed data"); } }
主线程要启动任务,执行调用即可,如下:
new UpdataTV().execute()