1)UI 线程是不安全的线程
2)android 提供了几种在其他线程中访问UI 线程方法
Activity.runOnUiThread(Runnale);
View.post(Runnable);
View.postDelayed(Runnable, delayMillis);
Handler
3)AsyTask中参数说明
第一个参数:向后台任务的执行方法传递的参数类型
第二个参数:在后台任务执行的过程中,要求UI线程处理中间状态,通常是一些UI 处理正传递的参数类型
第三个参数:后台任务执行为返回的类型
创建对象---->调用excute()时启动后台进程,执行doInBackground()代码------>UI 线程onpostExecute()方法 将doInBackground()的返回值作为参数
如果在执行后台进程时,要向UI 线程报告状态(值),可以通过publishProgress()触发,在UI线程中奖执行重新onProgressUpdate()方法
执行步骤
onPreExecute()//执行预处理,运行于UI线程(为后台做准备)
doInBackground()//后台进程
OnProgressUpdate()//运行于UI线程(要doInBackground()方法中。调用publishProgress()触发)
onPostExecte()// 运行于UI线程,可以对后台任务结果做出处理
准则:
Task实例在UI 中创建
execute()方法必须在UI线程中调用
不要手动调用doInBackground()
Task 一个对象只能执行一次,如果想多次运行,重新创建对象就OK