不知道在哪里写的代码是主线程,在哪里写的代码是子线程?感觉像是听天书,完全听不懂呀~则么办呀?
不知道在哪里写的代码是主线程,在哪里写的代码是子线程?感觉像是听天书,完全听不懂呀~则么办呀?
不知道在哪里写的代码是主线程,在哪里写的代码是子线程?感觉像是听天书,完全听不懂呀~则么办呀?
2016-03-10
在Android里可以这么理解,因为在android里你可以把UI界面当做主线程,你不能因为下载东西就一直显示下载,用户体验不好,也不被google容许,所以你点击下载就是开启子线程去下载了,手机页面该看什么你就看什么,等下载好子线程就发个message给handler它来更新UI,在你的手机界面显示或弹出一个下载好了的消息,如果不用handler下载好了你也不知道,还得自己去看。Handler和Thread:子线程是不能更新UI的,所以用Thread开启子线程后,如果需要更新UI,就通过Handler来更新UI.
而AsyncTask 中:
doInBackground(Params…) 属于子线程,后台执行,比较耗时的操作都可以放在这里。注意这里不能直接操作UI。此方法在后台线程执行,完成任务的主要工作,通常需要较长的时间。在执行过程中可以 调用publicProgress(Progress…)来更新任务的进度。
onPostExecute(Result) 相当于Handler 处理UI的方式,在这里面可以使用在doInBackground 得到的结果处理操作UI。 此方法在主线程执行,任务执行的结果作为此方法的参数返回
举报