[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]
分享到:
相关推荐
Android(Java)线程的两种实现方式
Java-Thread-Affinity,将Java线程绑定到给定的内核.zip
java线程分析android project例子,主要分析了sleep(),join(),yield()和wait()以及notify等方法以及需要注意的事项。
通过JNI接口静态注册的native方法去创建线程,同时提供native回调Java的方法。通过这个框架可以去实现线程监听某一个状态,然后回调Java的方法(如发消息去通知顶层,实现显示)
从网络上找来的高焕堂编写的android书籍,和大家分享,Android&Java的线程框架与模式_高焕堂_PDF.rar
一个多线程访问的同一个资源,java synchronized互斥锁的用法,android和此用法一致。
一个安卓聊天和客户端的小程序 初步理解客户端与服务器的连接 还有线程的使用
NoHttp核心架构之多线程通信、线程安全、线程同步;synchronized锁,Lock锁;具体讲解请移步:http://blog.csdn.net/yanzhenjie1003/article/details/50992468
Java源码,android多线程下载器演示
强烈推荐,经经验丰富的老师总结的JAVA线程的有关知识点。。
NoHttp核心架构之多线程通信、线程安全、线程同步;synchronized锁,Lock锁;具体讲解请移步博客:http://blog.csdn.net/yanzhenjie1003/article/details/50992468
1.讲解了Java多线程的基础, 包括Thread类的核心API的使用。2.讲解了在多线程中对并发访问的控制, 主要就是synchronized的使用, 由于此关键字在使用上非常灵活, 所以书中用了很多案例来介绍此关键字的使用, 为...
如何使用线程,线程池,ThreadHandler等等
Java多线程与线程安全实践-基于Http协议的断点续传.zip
非常好的java线程方面的资料,我精心整理的,大家可以看看
本例使用 Android studio 3.0 gradle:3.2.0 编写在 cpp 线程中调用 java 方法demo
浅析JAVA多线程在安卓应用程序中的应用.pdf
android java 多线程下载工具类 调用一个方法即可
曾经使用过AndroidAnnotations,对里面的线程切换方式很是喜欢,使用非常方便,可是由于各种原因,已经不再想使用AndroidAnnotations了, 但又舍不得这种便捷的方式,于是就实现了自己的线程切换。