`
lxcaoxin
  • 浏览: 125129 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

Android异步线程与Bundle消息传递

阅读更多
package com.lzr;
/////验证异步线程
/////先修改AndroidManifest.xml来默认启动HanderTest2这个Activity
////使用Looper来启动另一个线程实现handler
////HandlerThread对象用法
////Bundle对象用法
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;

public class Handlertest2 extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		//打印当前线程的ID
		System.out.println("Activity--->"+Thread.currentThread().getId());
		
		///生成一个HandlerThread线程对象,实现使用Looper来处理消息队列的功能,这个类由Android提供
		HandlerThread handlerThread=new HandlerThread("handler_thread");
	////在使用HandlerThread的getLooper()方法前,必须先调用start()启动线程
		handlerThread.start();  
		
	  ////
		MyHandler myHandler=new MyHandler(handlerThread.getLooper());
		Message msg=myHandler.obtainMessage();
		
	  ////生成Bundle对象
		Bundle b=new Bundle();
		b.putInt("age", 25);
		b.putString("name", "make");
		msg.setData(b);
	////将msg发送到目标对象,所谓目标对象,就是生成该对象的handler对象,如myHandler
		msg.sendToTarget();///调用当生成的对象发送给handleMessage(Message msg)
		
		
	
	}
	   class MyHandler extends Handler{
         
		   	public MyHandler()
		   	{}
		   	////使用looper来使Handler从另外一个线程中的消息队列中取得数据
		   	public MyHandler(Looper looper)
		   	{
		   		super(looper);
		   	}
		@Override
		public void handleMessage(Message msg) {
			// TODO Auto-generated method stub
			///super.handleMessage(msg);
			Bundle b=msg.getData();
			int age=b.getInt("age");
			String name=b.getString("name");
			System.out.println("age is"+age+" name is"+name);
			System.out.println("handler--->"+Thread.currentThread().getId());
			System.out.println("handlerMessage");
			
		}
	    	  
	      }
   
	
}

分享到:
评论
1 楼 337240552 2011-07-18  
不过这样用起来感觉意义不大,handler一般是在调用它的线程/进程内,这样的话还是在这个主线程内,还是阻塞UI线程。个人见解。不知是否对

相关推荐

    android主线程和子线程之间消息传递详解

    从主线程发送消息到子线程(准确地说应该是非UI线程) package com.zhuozhuo; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os....

    Android中的Handler与多线程应用实例

    本文首先解释一下handler是用来干嘛的,然后通过例子介绍其在多线程中的应用。 什么是Handler handler通俗一点讲就是用来在各个进程之间发送数据的处理对象。在任何进程中,只要获得了另一个进程的handler则可以通过...

    Google Android SDK开发范例大全 源码

     3.10 不同Activity之间的数据传递——Bundle对象的实现   3.11 返回数据到前一个Activity——startActivityForResult方法   3.12 具有交互功能的对话框——AlertDialog窗口   3.13 置换文字颜色的机关...

    详解android进行异步更新UI的四种方式

    大家都知道由于性能要求,Android要求只能在UI线程中更新UI,要想在其他线程中更新UI,我大致总结了4种方式,欢迎补充纠正: 使用Handler消息传递机制; 使用AsyncTask异步任务; 使用runOnUiThread(action)方法...

    新版Android开发教程.rar

    � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView...

    android 面试2

    避免ANR:Android应用程序通常运行在一个单独的线程里面,称谓主线程,所以在主线程里面少做一些耗时长的程序,而是利用子线程来操作一些繁琐的事情,用Handler来把子线程处理的消息返回给主线程 22、简要解释一下...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView...

    Android开发艺术探索.任玉刚(带详细书签).pdf

    本书是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。本书从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView...

    Android开发艺术探索

    2.2 Android中的多进程模式 / 36 2.2.1 开启多进程模式 / 36 2.2.2 多进程模式的运行机制 / 39 2.3 IPC基础概念介绍 / 42 2.3.1 Serializable接口 / 42 2.3.2 Parcelable接口 / 45 2.3.3 Binder / 47 ...

    疯狂Android讲义源码

     13.1.4 加入多线程 483  13.2 使用URL访问网络资源 488  13.2.1 使用URL读取网络资源 489  13.2.2 使用URLConnection  提交请求 490  13.3 使用HTTP访问网络 496  13.3.1 使用HttpURLConnection 496  ...

    Google.Android.SDK开发范例大全

     3.10 不同Activity之间的数据传递——Bundle对象的实现   3.11 返回数据到前一个Activity——startActivityForResult方法   3.12 具有交互功能的对话框——AlertDialog窗口   3.13 置换文字颜色的机关...

    Google Android SDK开发范例大全的目录

    3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView...

    android开发艺术探索高清完整版PDF

    / 375 10.2.2 消息队列的工作原理 / 380 10.2.3 Looper的工作原理 / 383 10.2.4 Handler的工作原理 / 385 10.3 主线程的消息循环 / 389 第11章 Android的线程和线程池 / 391 11.1 主线程和子线程 / 392 11.2 ...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与...

    Android异步更新UI的四种方式

    大家都知道由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,大致有4种方式,下面分别使用四种方式来更新一个TextView。 1.使用Handler消息传递机制 package ...

Global site tag (gtag.js) - Google Analytics