(多个线程访问同一个资源,在同)
2、MainThread与Worker Thread
1)UI相关的代码就是MainThread
2)其他代码就是WorkerThread(不允许操作UI,ProgressBar可以)
3)在一个应用程序当中,主线程通常用于接收用户的输入,以及将运算的结果反馈给用户(也就是主线程不能阻塞)
对于一些可能会产生阻塞的操作,必须放在Worker Thread当中
3、Android当中的线程使用
4、什么是Handler
5、Handler、Looper和MessgeQueue的基本原理(可用于实现线程之间的通信)
这三者配合可完成消息队列
1)首先,生成一个类(继承Handler),并创建Handler类的对象的引用Myhandler(名字可自定义)
2)再将新的firstHandler对象赋值给Handler类的对象的引用Myhandler(向上转型);
3)Message smg = Myhandler.obtainMessage(); 利用Myhandler对象的obtainMessage方法创建一个消息对象
4)对msg对象进行操作,让msg附带消息;如:msg.what = 100;
5)调用Myhandler.sendMessage(msg);方法,将msg这个消息对象放到消息队列当中
6)Looper将会从消息队列当中将消息取出
7)Looper将会找到与消息对象对应的Handler对象(这里是Myhandler)
8)最后Looper将会调用Myhandler对象的handlerMessage(Message msg);方法,用于处理消息对象
6、通过Handler实现线程间通信
7、在主线程当中实现Handler的handlerMessage()方法
8、在Worker Thread当中通过Handler发送消息
1)准备Looper对象
在线程的类的run方法中,调用Looper.prepare();
2)在Worker Thread生成Handler对象
handler = new Handler(){public void handleMessage(Message msg){}}
3)在MainThread当中发送消息