安卓平台中多线程应用很广泛,在ui更细、游戏开发和耗时处理(网络通信)等方法都需要多线程。
1、在android中线程广泛应用,但是有严格的限制。这种限制表现在2个方法:
a.在 Android ui中能够更新UI元素的线程必须是创建它的线程,而不是其他的线程。
异常会出现在labelTimer。setText 语句,labelTimer是一个TextView控件,更细TextView控件等UI元素必须由创建它的线程更新
而不能在其他线程中更新。
b.在UI等主线程中不能进行网络通信等耗时的处理,必须由一个子线程负责处理,这个是3.0后新追加的。
Handler 和Message
Handler 和Message使用比较多
Handle是用来处理多个线程直接通信的工具类,Message是在线程间发送信息。
android.os.Message类有一个obj属性可以携带任可序列化的对象,what属性是制定一个标志,接收
线程方可以通过这个what字段判断是那个线程发送过来的消息。
android.os.Handle 对象可以通过下面的方法发送信息:
sendEmptyMessage(int),发送1条空消息
sendMessage(Message),发送消息,可携带参数
sendMessageAtTime(Message,long), 未来某一时间点发送消息
sendMessageDelayed(Message,long),延时N毫秒发送消息
一个线程发出消息后,另外的线程要接收消息,接收消息是通过重写Handle类的HandleMessage(Message)
实现的,更新UI元素的HandleMessage(Message)。