作者:刘昊昱

博客:http://blog.csdn.net/liuhaoyutz

和JAVA一样,Android下我们可以通过创建一个Thread对象实现多线程。Thread类有多个构造函数,一般通过构造函数Thread(Runnable runnable)实现多线程,代码如下:

Thread thread = new Thread(new Runnable() {         //重写Runnable的run()方法         publicvoid run() {                   //子线程操作实现         }});thread.start();          // 启动线程thread执行


使用标准的JAVA线程类Thread可以创建子线程,但是在Android下,用Thread创建的线程有一个问题就是Thread创建的子线程不能对UI界面进行任何操作。为此,Android引入了Handler消息处理机制,通过Handler在子线程和UI线程之间传递信息,达到更新UI界面的目的。

下面看一个使用Handler处理消息的例子,其运行效果如下:

先来看主布局文件,其内容如下:

<?xml version="1.0"encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:id="@+id/textView" /> </LinearLayout>


下面看主Activity文件的实现,其内容如下:

package com.liuhaoyu;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.widget.TextView;public class MainActivity extends Activity {public Handler handler;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                final TextView text = (TextView)findViewById(R.id.textView);        handler = new Handler() {    public void handleMessage(Message msg) {    Log.i("Looper",String.valueOf(msg.what));    if(msg.what == 0x0)    {    text.append(Integer.toString(msg.arg1));    }    }     };     Thread thread = new Thread(new Runnable() {    public void run() {    int i = 0;    while(true)    {    try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}                    Message message = new Message();                    message.arg1 = i;                    message.what = 0x0;                    handler.sendMessage(message);                                        if(i < 9)    i++;    else    i = 0;    }    }    });    thread.start();    }}


更多相关文章

  1. [Android]Can't create handler inside thread that has not cal
  2. 在eclipse创建android 工程
  3. Android(安卓)Handler(四)
  4. android保存文件到sd卡,读取和清空记录功能(可以用来保存用户名和
  5. [置顶] android 深入理解AnsyncTask
  6. Android各框架的总结及选型
  7. 使用Adobe Flash Builder Burrito创建AIR For Google Android应
  8. Android消息机制——Handler
  9. Android(安卓)OkHttp的使用心得

随机推荐

  1. Android Mms专题之:PDU介绍
  2. 分享两本android电子书
  3. Android 系统framework 概述【转载】
  4. android network,gps定位切换
  5. android studio proguard 混淆微信libamm
  6. Android studio 2.3.3+Dlib
  7. Android 安全机制概述 Permission
  8. Android: 向最强看齐, 反编译 植物大战僵
  9. Android(安卓)使用RecycleView制作头像堆
  10. Setting up Automatic NDK Builds in Ecl