我们知道如果在UI线程(主线程)中执行耗时操作,比如说在 ui线程 里写一个 for循环,
for(int i = 0; i < 100; i ++)
{
Thread.sleep(1000);
}
让主线程循环100次,每次都睡1秒,omg....
就会出现ANR (Application not responding),也就是无法响应,不管你在屏幕如何点击滑动,程序没有任何响应,这给用户的体验是极差的。所以我们要使用后台线程去执行耗时操作咯:
上回用的是: <a href="http://blog.csdn.net/dummyo/article/details/78956084">FutureTask 和 Callable</a>
这回我们用AsyncTask. 它的用法很简单,继承AsyncTask,并重写它的 doInBackground(Void....params)方法即可。
在doInBackground写耗时操作,然后你想拿到这个耗时操作返回的结果,更新显示在ui界面上,
注意,不要再doInBackground里面更新ui,因为这是线程不安全的,Android只允许在主线程里更新ui。
不方^_^,重写onPostExecute()方法,它会在doInBackground()方法执行结束后执行,更爽的是:它是在主线程而非后台线程上运行的。因此他会拿到doInBackground()方法返回的值,然后在这个方法里面操作ui就行啦。