当android程序启动是,系统会自动分配一个main 主线程,也叫UI线程,它负责分发事件给构件,包括绘制事件。我们在这里才能与Android UI工具包中的组件进行交互。
1. 当在UI线程进行一个耗时操作的时候,比如从服务器读取数据,获取网络资源的时候, 应重启一个新的线程,方法 : new Thread(new Runable(){});
2. 因为android是线程不安全的,所以不要在主线程之外的其他线程对视图中的组件进行修改;
处理方法:{
一、 把修改组件的代码放入:view.post(new Runable(){修改的代码区 });这个方法是脱离了子线程的执行,子线程执行完毕之后我们的这个线程才开始执行;也就是说他是把这个修改操作放入主线程的消息队列中,在UI主线程中执行的;
二、 AsyncTask类:这样可把耗时操作和修改UI组件的代码进行分开,增强代码的阅读性;然后new Thread()中new这个继承写好了的子类;
三、 handler.post(new Runnable())方法,view.post()方法内会创建一个handler,并调用handler.post(),前面是view的内部帮你完成、后面要你自己创建Handler。
四、 new Handler(new Callback())来创建一个Herler对象;
}
View.post()方法:
继承AsyncTask类:
handler.post(new Runnable()
new Handler(new Callback())