[color=brown][flash=200,200]
在java中使用
线程要比在安卓中简单一些,在上篇文章中已经讲过java线程的使用,现在我们谈谈在安卓中应该怎样使用线程呢。
其实在安卓和java中并没有很多不一样,二者使用最大的区别是在安卓中的线程不能直接访问UI,原因我们暂且放在一边,我们先来解决一下在安卓中如何使用线程,让安卓中的线程能够访问UI。
在解决这
个问题之前我们需要了解handle。handle我们可以
理解为一个容器,在一个地方将信息存储进去,在另一个地方将信息取出来。下面我们以一个
例子来说明一下。
class="ruby" name="code">
package com.example.move;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;
public class MoveTherad extends Thread{
private TextView text;
private int i=0;
public MoveTherad(TextView text) {
super();
this.text = text;
}
//创建handle对象,并且取出其中信息在组件上显示信息
Handler hand=new Handler(){
public void handleMessage(Message msg){
String s=(String)msg.obj;
text.setText(s);
}
};
public void run(){
while(true){
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
// 存储信息
Message msg=hand.obtainMessage();
msg.obj=String.valueOf(i);
hand.sendMessage(msg);
i++;
}
}
}
看到这里可能有些人就要问为什么要多此一举把数据存储在取出了,对于这个我也只是做了初步的了解。因为在安卓中启动一个程序时会启动一个主线程,处理UI的线程就是主线程。子线程更新UI是单线程的,在这个过程中通常就会抛出
异常!所以需要使用handle作为一个媒介传递UI和子线程之间的信息。有兴趣的小伙伴可以试一下不用handle,看看是不是会报错。
[/flash][/color]