从java线程到安卓线程

本文介绍在安卓中如何使用线程并实现线程与UI间的交互,通过使用Handler作为媒介传递信息,避免了子线程直接更新UI时可能产生的异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[color=brown][flash=200,200]
在java中使用线程要比在安卓中简单一些,在上篇文章中已经讲过java线程的使用,现在我们谈谈在安卓中应该怎样使用线程呢。
其实在安卓和java中并没有很多不一样,二者使用最大的区别是在安卓中的线程不能直接访问UI,原因我们暂且放在一边,我们先来解决一下在安卓中如何使用线程,让安卓中的线程能够访问UI。
在解决这 :D 个问题之前我们需要了解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,看看是不是会报错。
[code="java"]
[/code][/flash][/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值