--------------------------------------------AndroidManifest.xml----------------------------------

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

package="com.ch22"

android:versionCode="1"

android:versionName="1.0">

<uses-sdk

android:minSdkVersion="8"

android:targetSdkVersion="15"/>

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme">

<activity

android:name=".MainActivity"

android:label="@string/title_activity_main">

<intent-filter>

<actionandroid:name="android.intent.action.MAIN"/>

<categoryandroid:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

</application>

</manifest>

--------------------------------------------Layoutactivity_main.xml-----------------------------

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/LinearLayout1"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

<Button

android:id="@+id/btn"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Button"/>

</LinearLayout>

--------------------------------------------MainActivity.java--------------------------------------

packagecom.ch22;

importandroid.app.Activity;

importandroid.graphics.Color;

importandroid.os.Bundle;

importandroid.os.Handler;

importandroid.os.Message;

importandroid.util.Log;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

/**

*

*项目名称:com.ch22

*类名称:MainActivity

*类描述:Handler

*创建人:方勇

*创建时间:2012-12-10下午8:29:04

*Copyright(c)方勇-版权所有

*/

publicclassMainActivityextendsActivity{

privateButtonbtn;

/*更新UI主线程对象*/

privateHandlerhandler=newHandler(){

/*异步接受消息*/

@Override

publicvoidhandleMessage(Messagemsg){

super.handleMessage(msg);

/*获取Map数据*/

Bundlebundle=msg.getData();

/*取得颜色值*/

intcolor=bundle.getInt("color");

MainActivity.this.btn.setBackgroundColor(color);

Log.i("fy","Handler="+Thread.currentThread().getName());

}

};

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findView();

setListeners();

Log.i("fy","MainHandler="+Thread.currentThread().getName());

}

/*实例化UI*/

privatevoidfindView(){

this.btn=(Button)findViewById(R.id.btn);

}

/*设置监听*/

privatevoidsetListeners(){

btn.setOnClickListener(newbtnOnClickListener());

}

classbtnOnClickListenerimplementsOnClickListener{

publicvoidonClick(Viewv){

MyThreadmy=newMyThread();

/*启动线程*/

newThread(my).start();

}

};

classMyThreadimplementsRunnable{

publicvoidrun(){

try{

Thread.sleep(3000);//子线程睡眠3秒

}catch(InterruptedExceptione){

e.printStackTrace();

}

/*实例化消息*/

Messagemsg=newMessage();

Bundlebundle=newBundle();

bundle.putInt("color",Color.RED);

msg.setData(bundle);

/*发送消息,告诉老大(主线程)请更新*/

MainActivity.this.handler.sendMessage(msg);

Log.i("fy","MyThread="+Thread.currentThread().getName());

}

};

}

--------------------------------------------结果-----------------------------------------------------

点击按钮前

ch022 Android Handler_第1张图片

点击按钮后的3秒,按钮变为红色

ch022 Android Handler_第2张图片

<!--EndFragment-->

更多相关文章

  1. 你对进程线程到底理解有多少
  2. C# 多线程--线程池的详细介绍
  3. C#中多线程之Thread类详解
  4. Catalog Service - 解析微软微服务架构实例代码
  5. C#线程控制的实例详解
  6. 介绍一个微软开源项目网站--CodePlex
  7. 使用ConcurrentDictionary多线程同步字典集合实例详解
  8. c#中关于多线程创建对象的示例分享
  9. C#多线程之Semaphore的使用详解

随机推荐

  1. Android_SDK_NDK_JNI
  2. Android 视频分享 Android Studio 视频教
  3. 关于程序中Activity若干问题知识点总结
  4. Android逆向之旅—解析编译之后的Resourc
  5. Android---33---四种加载模式
  6. android体系结构介绍
  7. android 显示系统 surfaceflinger 分析
  8. 基于树莓派的 Android(安卓)Things 开发
  9. android关于百度地图显示网格问题
  10. Android系列之网络(二)----获取HTTP请求头