我们知道android的UI线程,即是android的主线程,主线是线程安全的。像有些耗时的线程,如下载、上传或是大文件解析等是不可以放在主线程中进行的,为什么这样说呢?因为在主线程中进行耗时的操作会导致界面卡住,导致ANR(应用程序无响应),ANR给客户的体验非常不好,作为程序员就要尽量避免出现这种情况。我们如何来做呢?其实我们就可以用多线程来解决。比如我们可以开启一个新线程来做这个耗时的操作,而不影响到主线程的界面加载,下面举个例子来说明一下:
public class HandlerTest extends Activity{
private Handler handler;
private Runnable runnable = new Runnable {
public void run{
initViews(); //大数据加载
}
}
public void onCreate(){
super.savedInstance(....);
handler = new Handler();
// initViews(); 如果这样加载的话容易卡住
//我们用另外一种方法来实现
handler.postDelayed(runnable,1000); 开启另外一个线程来实现数据的加载
}
public void initViews(){
.......
.......
....... //加载很多数据
}
}
上面这种多线程的方法就可以避免导致ANR,也可实现快速加载!