LooperActivity
package org.wp.activity;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class LooperActivity extends Activity {
/** iHandler对象 **/
private Handler iHandler;
/** 发送消息 **/
private Button myButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.looper);
addMessageHandler();
myButton = (Button) this.findViewById(R.id.myButton);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread() {
public void run() {
iHandler.sendEmptyMessage(0);
}
}.start();
}
});
}
/**
* Looper 类应用于在线程中建立一个消息循环,
* 线程默认是没有消息循环的,
* 我们可以通过在线程中调用 prepare()创建消息循环,
* 然后通过loop() 进入消息循环
*/
private void addMessageHandler() {
iHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
new Thread() {
public void run() {
// 默认情况下Android中新诞生的线程是没有开启消息循环的
// (主线程除外,主线程系统会自动为其创建Looper对象,开启消息循环)
// Looper对象通过MessageQueue来存放消息和事件
// 一个线程只能有一个Looper,对应一个MessageQueue
// 需要先调用Looper.prepare()启用Looper
Looper.prepare();
// 如果没有 Looper.prepare(); 与 Looper.loop();
// 会抛出异常
// Can't create handler inside thread that has not
// called Looper.prepare()
Toast.makeText(LooperActivity.this, "接收到消息",
Toast.LENGTH_SHORT).show();
// 在这里执行这个消息循环如果没有这句
// 就好比只创建了Looper的消息队列而
// 没有执行这个队列
// 那么上面Toast的内容是不会显示出来的
// Looper.loop(); 让Looper开始工作,从消息队列里取消息,处理消息。
Looper.loop();
}
}.start();
}
};
}
}
looper.xml
<?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">
<Button android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="点击发送消息"
android:id="@+id/myButton" />
</LinearLayout>
分享到:
相关推荐
Android Looper 使用介绍 Android Looper 是 Android 操作系统中的一种机制,用于在单线程中创建消息循环,以便实现线程之间的通信和消息处理。Looper 对象通过 MessageQueue 来存放消息和事件,每个线程只能有一...
在Android系统中,`Looper`是一个至关重要的组件,它与`Handler`和`MessageQueue`共同构成了Android的消息处理机制。这个机制使得UI线程能够处理来自其他线程的异步消息,保持用户界面的响应性。这篇博客文章可能...
android looper handler 子线程 主线程详解
### Android Looper 分析 #### 一、概述 在 Android 应用开发中,消息处理机制扮演着极其重要的角色。Looper 类与 Handler 和 Message Queue 共同构成了 Android 的消息处理框架,它们之间的协同工作保证了应用...
在Android开发中,`Looper`、`Handler`和`MessageQueue`是三个关键组件,它们共同构成了Android消息处理系统,用于实现线程间的通信,尤其是让UI线程能够响应非UI线程的数据更新。让我们深入探讨一下这些概念及其在...
Looper用于封装了android线程中的消息循环,默认情况下一个线程是不存在消息循环(message loop)的,需要调用Looper.prepare()来给线程创建一个消息循环,调用Looper.loop()来使消息循环起作用,使用Looper....
在Android系统中,`Looper`是一个至关重要的组件,它在消息传递和事件处理机制中扮演着核心角色。本文将深入探讨`Looper`的工作原理、如何使用以及它在Android应用程序中的应用。 `Looper`是Android消息循环的核心...
在Android系统中,`Looper`类扮演着至关重要的角色,它是消息循环机制的核心。`Looper`使得线程能够处理来自`Handler`的消息,是Android异步通信和事件驱动模型的基础。下面将详细介绍`Looper`对象及其相关的主要...
自己写的关于Android的Looper的示例程序。在主线程即UI线程外,新建一个Looper线程,并用Messenger和Handler来处理message和posted runnable。程序中,在负线程中默认加了一个3s的线程等来,来帮助理解sent message...
`Looper`、`Handler`以及`Message`是Android异步通信的核心组件。本篇文章将深入探讨如何自定义带有消息循环`Looper`的线程。 首先,我们需要了解`Looper`的作用。`Looper`是Android系统中的一个类,它负责在一个...
Android应用的运行基于消息驱动模型,这一模型的核心在于Looper、Handler和MessageQueue的协同工作。下面我们将深入理解这三个组件的作用及其交互。 1. **Message(消息)**: - Message是应用程序中传递信息的...
它提供了方便的方法,允许开发者直接将Android的主线程和Looper线程作为RxJava的调度器来使用。 RxJava是一个非常流行的响应式编程库,它引入了一种声明式的方式来处理异步数据流。在Android开发中,通常需要在特定...
本文将深入探讨Android中的三种主要线程模式:Handler、Thread以及Looper,并结合源码分析它们的工作原理。 首先,我们来理解一下Android应用的基本运行环境。Android系统默认在主线程(UI线程)中执行所有的用户...
Android 多线程 Looper Handler Android 操作系统中,多线程是一种常见的编程技术,通过使用多线程,可以提高应用程序的响应速度和效率。在 Android 中,多线程可以分为两种:有消息循环的线程和没有消息循环的线程...
### Android之Looper、MessageQueue、Handler与消息循环详解 #### 一、概述 在Android开发过程中,消息处理机制是至关重要的部分,它涉及到应用程序如何管理、传递和响应各种事件。本篇文章将深入探讨Android中...
首先,`Looper`是Android消息循环的核心。它的主要任务是不断地从`MessageQueue`中取出`Message`对象,并将其分发给相应的`Handler`进行处理。`Looper`的构造函数是私有的,目的是为了防止直接实例化,而是通过`...
在Android应用开发中,Handler、Looper和Message是实现线程间通信的重要机制,尤其是在主线程与工作线程之间同步数据和执行UI更新时。Handler、Looper和Message三者结合使用,构建了一个消息处理系统,使得非UI线程...
在Android系统中,Looper是消息循环机制的核心组件,它与Handler和Message紧密配合,使得应用程序能够实现线程间的通信。本文将深入探讨Looper的工作原理、使用场景以及如何在实际开发中应用。 首先,理解Looper的...