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");
}
}
}
分享到:
相关推荐
本示例"Android异步线程使用Demo"主要探讨的是Android中的AsyncTask,一个轻量级的异步任务框架,它使得在后台线程执行任务并在UI线程更新结果变得非常便捷。 AsyncTask是一个抽象类,提供了三个泛型参数:Params、...
### Android多线程机制详解 #### 一、引言 Android多线程机制是Android开发中非常重要的一部分,尤其是在处理耗时任务(如网络请求、大数据处理等)时,避免阻塞UI线程,保证应用程序的流畅性和响应性。本文将详细...
5. Bundle与Message的关系:在Android的Handler机制中,Message对象用于在不同线程间传递信息。Message内部就包含了一个Bundle成员,可以用来传递额外的数据。这样,开发者可以通过Message的Bundle来传递复杂的业务...
Android多线程下载涉及的技术知识点较多,涵盖了网络编程、文件操作、多线程处理以及Android平台特有的API使用等多个方面。以下是对给定文件内容中涉及知识点的详细解读: 1. 多线程下载的原理: 多线程下载是指将...
`Bundle1.zip`这个压缩包很可能是包含了一个或多个Android项目的源代码示例,专门用来演示如何使用`Bundle`来传递数据。`Bundle`是Android中的一个键值对存储容器,类似于Java中的`HashMap`,但具有序列化能力,可以...
在IT行业中,线程与消息处理是Android应用开发中的核心概念,它们对于实现高效、响应式的用户界面至关重要。本文将深入探讨这两个主题,以及它们如何在Android系统中协同工作。 线程是操作系统分配CPU时间的基本...
从主线程发送消息到子线程(准确地说应该是非UI线程) package com.zhuozhuo; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os....
本文将深入探讨Android中的多线程,包括线程类的基本方法、进程与线程的区别、线程间通信以及Java中实现线程的方式。 首先,让我们了解Thread类的一些常用方法: 1. `currentThread()`:返回当前正在执行的线程...
2. **线程安全**:与构造方法不同,`setArguments()`可以在非主线程中安全地调用,这在异步操作中传递参数时特别有用。 3. **类型安全**:通过使用Bundle,可以方便地使用`putString()`, `putInt()`, `...
二、Bundle传递数据 Bundle是Android中的一个容器类,可以存储键值对,它通常与Intent结合使用。当Intent不能直接传递某些复杂类型时,可以将数据放入Bundle,然后通过Intent传递。 三、静态成员变量和单例模式 ...
### Android中线程间通信详解 #### 一、引言 在Android开发中,线程间的通信是一项重要的技术。为了确保应用的响应性和流畅性,开发者必须了解如何正确地...希望本文能帮助开发者更好地理解和掌握Android多线程编程。
### Android多线程知识点 #### 一、Android多线程编程概述 在Android开发中,为了提高用户体验并充分利用硬件资源,通常需要实现多线程功能。这样不仅可以避免UI线程被长时间阻塞导致ANR(Application Not ...
因此,要在子线程中更新主线程的控件,你需要利用Android的消息传递机制,主要是通过`Message`和`Handler`来实现。 首先,理解`Handler`和`Looper`的角色。`Handler`是消息处理器,负责接收和处理来自其他线程的...
在Android开发中,`Handler`、`Thread`、`Toast`、`消息队列`以及`线程`是实现UI交互和异步处理的关键概念。本文将深入探讨这些概念,并结合给定的"Android Handler 线程 示例代码"进行详细讲解。 首先,我们来看`...
Handler机制是Android中进行线程间通信的核心组件之一,它主要用于主线程与子线程之间的消息传递。Handler机制主要由四个部分组成:`Handler`、`Looper`、`MessageQueue`和`Thread`。 - **Handler**:用于发送和...
这个Demo可能还涉及到异步任务、线程同步、以及如何在不同线程间安全地传递数据等内容。通过学习和实践这个Demo,开发者可以更好地理解和掌握Android中线程间通信的技巧,提高应用程序的性能和用户体验。
在Android开发中,Handler、Looper和Message是实现异步消息处理的关键组件,它们共同构成了Android的消息传递机制。这个机制使得应用程序能够优雅地处理UI线程与后台线程之间的通信,避免了因直接操作UI线程而导致的...