`
lxcaoxin
  • 浏览: 127935 次
  • 性别: 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异步线程使用Demo

    本示例"Android异步线程使用Demo"主要探讨的是Android中的AsyncTask,一个轻量级的异步任务框架,它使得在后台线程执行任务并在UI线程更新结果变得非常便捷。 AsyncTask是一个抽象类,提供了三个泛型参数:Params、...

    android多线程机制

    ### Android多线程机制详解 #### 一、引言 Android多线程机制是Android开发中非常重要的一部分,尤其是在处理耗时任务(如网络请求、大数据处理等)时,避免阻塞UI线程,保证应用程序的流畅性和响应性。本文将详细...

    android bundle message

    5. Bundle与Message的关系:在Android的Handler机制中,Message对象用于在不同线程间传递信息。Message内部就包含了一个Bundle成员,可以用来传递额外的数据。这样,开发者可以通过Message的Bundle来传递复杂的业务...

    android多线程下载.pdf

    Android多线程下载涉及的技术知识点较多,涵盖了网络编程、文件操作、多线程处理以及Android平台特有的API使用等多个方面。以下是对给定文件内容中涉及知识点的详细解读: 1. 多线程下载的原理: 多线程下载是指将...

    Android应用源码之Bundle1.zip

    `Bundle1.zip`这个压缩包很可能是包含了一个或多个Android项目的源代码示例,专门用来演示如何使用`Bundle`来传递数据。`Bundle`是Android中的一个键值对存储容器,类似于Java中的`HashMap`,但具有序列化能力,可以...

    线程与消息处理

    在IT行业中,线程与消息处理是Android应用开发中的核心概念,它们对于实现高效、响应式的用户界面至关重要。本文将深入探讨这两个主题,以及它们如何在Android系统中协同工作。 线程是操作系统分配CPU时间的基本...

    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多线程详解.pdf

    本文将深入探讨Android中的多线程,包括线程类的基本方法、进程与线程的区别、线程间通信以及Java中实现线程的方式。 首先,让我们了解Thread类的一些常用方法: 1. `currentThread()`:返回当前正在执行的线程...

    Android 中为什么要用Fragment.setArguments(Bundle bundle)来传递参数

    2. **线程安全**:与构造方法不同,`setArguments()`可以在非主线程中安全地调用,这在异步操作中传递参数时特别有用。 3. **类型安全**:通过使用Bundle,可以方便地使用`putString()`, `putInt()`, `...

    Android-Activity之间数据传递的多种方式

    二、Bundle传递数据 Bundle是Android中的一个容器类,可以存储键值对,它通常与Intent结合使用。当Intent不能直接传递某些复杂类型时,可以将数据放入Bundle,然后通过Intent传递。 三、静态成员变量和单例模式 ...

    Android中线程间通信.pdf

    ### Android中线程间通信详解 #### 一、引言 在Android开发中,线程间的通信是一项重要的技术。为了确保应用的响应性和流畅性,开发者必须了解如何正确地...希望本文能帮助开发者更好地理解和掌握Android多线程编程。

    android多线程

    ### Android多线程知识点 #### 一、Android多线程编程概述 在Android开发中,为了提高用户体验并充分利用硬件资源,通常需要实现多线程功能。这样不仅可以避免UI线程被长时间阻塞导致ANR(Application Not ...

    android里如何在子线程中如何更新主线程的控件

    因此,要在子线程中更新主线程的控件,你需要利用Android的消息传递机制,主要是通过`Message`和`Handler`来实现。 首先,理解`Handler`和`Looper`的角色。`Handler`是消息处理器,负责接收和处理来自其他线程的...

    Android Handler 线程 示例代码

    在Android开发中,`Handler`、`Thread`、`Toast`、`消息队列`以及`线程`是实现UI交互和异步处理的关键概念。本文将深入探讨这些概念,并结合给定的"Android Handler 线程 示例代码"进行详细讲解。 首先,我们来看`...

    新启一个线程

    Handler机制是Android中进行线程间通信的核心组件之一,它主要用于主线程与子线程之间的消息传递。Handler机制主要由四个部分组成:`Handler`、`Looper`、`MessageQueue`和`Thread`。 - **Handler**:用于发送和...

    Android_Handler的线程队列Demo

    这个Demo可能还涉及到异步任务、线程同步、以及如何在不同线程间安全地传递数据等内容。通过学习和实践这个Demo,开发者可以更好地理解和掌握Android中线程间通信的技巧,提高应用程序的性能和用户体验。

    Android Handler 异步消息机制的例子

    在Android开发中,Handler、Looper和Message是实现异步消息处理的关键组件,它们共同构成了Android的消息传递机制。这个机制使得应用程序能够优雅地处理UI线程与后台线程之间的通信,避免了因直接操作UI线程而导致的...

Global site tag (gtag.js) - Google Analytics