`
peijie1
  • 浏览: 6028 次
文章分类
社区版块
存档分类
最新评论

从java线程到安卓线程

阅读更多
[color=brown][flash=200,200]
    在java中使用线程要比在安卓中简单一些,在上篇文章中已经讲过java线程的使用,现在我们谈谈在安卓中应该怎样使用线程呢。
    其实在安卓和java中并没有很多不一样,二者使用最大的区别是在安卓中的线程不能直接访问UI,原因我们暂且放在一边,我们先来解决一下在安卓中如何使用线程,让安卓中的线程能够访问UI。
     在解决这 个问题之前我们需要了解handle。handle我们可以理解为一个容器,在一个地方将信息存储进去,在另一个地方将信息取出来。下面我们以一个例子来说明一下。
     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]
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics