这个例子也是Demo4的另外一种实现方式,大家可以对比学习:
Java代码
package com.example.Looper_05;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
public class Looper_05 extends Activity implements OnClickListener {
private final int WC = LinearLayout.LayoutParams.WRAP_CONTENT;
private final int FP = LinearLayout.LayoutParams.FILL_PARENT;
public TextView tv;
private RR r;
private Button btn, btn2;
private Handler h;
private Context ctx;
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
ctx = this;
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
btn = new Button(this);
btn.setId(101);
btn.setBackgroundResource(R.drawable.icon);
btn.setText("test looper");
btn.setOnClickListener(this);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(100, 50);
param.topMargin = 10;
layout.addView(btn, param);
btn2 = new Button(this);
btn2.setId(102);
btn2.setBackgroundResource(R.drawable.icon);
btn2.setText("exit");
btn2.setOnClickListener(this);
layout.addView(btn2, param);
tv = new TextView(this);
tv.setTextColor(Color.WHITE);
tv.setText("");
LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams(FP, WC);
param2.topMargin = 10;
layout.addView(tv, param2);
setContentView(layout);
// ------------------------
r = new RR();
}
public void onClick(View v) {
switch (v.getId()) {
case 101:
String obj = "mainThread";
Message m = h.obtainMessage(1, 1, 1, obj);
h.sendMessage(m);
break;
case 102:
h.getLooper().quit();
finish();
break;
}
}
// ------------------------------------------------
public class EventHandler extends Handler {
public EventHandler(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
((Activity) ctx).setTitle((String) msg.obj);
}
}
// ------------------------------------------------
public class RR implements Runnable {
public RR() {
Thread aThread = new Thread(null, this, "RR");
aThread.start();
}
public void run() {
Looper.prepare();
h = new Handler() {
public void handleMessage(Message msg) {
EventHandler ha = new EventHandler(Looper.getMainLooper());
String obj = (String) msg.obj + ", myThread";
Message m = ha.obtainMessage(1, 1, 1, obj);
ha.sendMessage(m);
}
};
Looper.loop();
}
}
}
分享到:
相关推荐
本学习源码着重关注的是Handler和Looper的交互过程,以及它们如何协同工作来处理应用程序中的消息。下面将详细阐述这些概念。 1. **Handler**:Handler是Android中用于在不同线程之间发送和处理消息的对象。开发者...
在Android应用开发中,Handler、Message和Looper是用于线程间通信的重要组件,尤其是在处理UI更新和异步任务时。理解它们的工作原理是成为一名专业Android开发者的关键。 首先,我们来看`Handler`。Handler是一个...
在Android开发中,`Handler`、`Looper`和`MessageQueue`是三个核心组件,它们共同构成了Android消息处理机制,用于实现线程间的通信。这个压缩包“Android应用源码之HandlerLooper1_Android.zip”可能包含了一个示例...
13. **异步处理与多线程**:Android应用通常在主线程中执行,为了防止UI卡顿,需要了解AsyncTask、Handler、Looper和Thread等异步处理机制。 14. **Gradle构建系统**:Android Studio使用Gradle作为构建工具,PPT会...
在安卓开发中,`Handler`、`Looper`和`MessageQueue`是三个核心组件,它们共同构成了Android消息处理机制,...通过学习这些源码,开发者可以更深入地理解Android的事件驱动模型,并能更好地处理多线程间的通信问题。
在Android开发中,高效地管理线程和资源是优化应用性能的关键。本篇文章将探讨四个核心概念:线程池、信号量、Looper以及缓存,它们在构建高性能、响应...不断学习和实践,我们可以在Android开发领域取得更大的进步。
在Android系统中,`Handler`、`Looper`和`MessageQueue`是三个核心组件,它们共同构成了...通过学习这部分源码和解析,开发者可以更好地理解和运用Android的消息处理机制,优化多线程编程,提高应用的性能和用户体验。
在Android应用开发中,`Handler`、`Looper`和`MessageQueue`是处理应用程序线程间通信的关键组件,尤其在实现UI更新...通过分析和学习这个示例代码,开发者可以更深入地理解Android应用中的多线程处理和事件驱动编程。
Handler、Looper和MessageQueue是Android异步处理机制中的核心组件,它们共同构建了一个消息传递系统,使得在不同线程间进行数据交换变得可能。下面我们将深入探讨这三个组件的工作原理及其在实际开发中的应用。 ...
在Android基础学习的过程中,开发小程序是提升技能的重要途径。这些小程序涵盖了Android应用开发的基本概念、组件和机制,为初学者提供了宝贵的实践机会。下面将详细解释Android开发中的关键知识点,并结合"新建...
【Android学习资料大全】 在Android开发领域,不断学习和实践是提升技能的关键。这份"(最全)android学习资料大全"包含了大量的学习资源和经典源码案例,旨在为Android开发者提供一个全面的学习平台,帮助他们从...
由于Android主线程不能执行耗时操作,因此需要掌握AsyncTask、Handler、Looper、Thread和Runnable等多线程技术,以及使用Loader和LiveData进行异步数据加载。 九、权限管理 Android 6.0引入了运行时权限管理,...
在“Android学习计划”这个主题下,我们主要探讨的是如何系统地学习Android开发技术,以及可能涉及的相关工具和源码分析。在这个过程中,无论是初学者还是有经验的开发者,都需要一个明确的学习路径来提升自己的技能...
9. **Android message机制**:Android的消息机制基于Handler、Looper和Message,用于在不同的线程之间进行通信。这份文档可能会详细解释这些概念,以及如何在UI线程和后台线程之间传递数据和执行异步操作。 通过...
了解Handler、Looper、AsyncTask等多线程工具的使用是必要的,同时,Android提供的rxJava、Coroutines等现代并发库也是开发者需要熟悉的技术。 然后,我们讨论"网络"部分。Android应用常常需要从服务器获取数据,这...
8. **异步处理**:理解线程和进程的概念,学习使用AsyncTask、Handler、Looper以及现代的Coroutines或LiveData进行异步操作。 9. **权限管理**:Android 6.0(API 23)引入了运行时权限,开发者需要在应用运行时...
理解并运用Android的多线程模型,包括Handler、Looper和AsyncTask。 最后,关注Android的新特性和版本更新,如Android Jetpack组件、Kotlin语言、AndroidX库和Material Design设计指南,这些都是现代Android开发的...
在Android基础学习的资源包中,包含了三本国内教材和一本国外教材,这些书籍是学习Android开发的宝贵资料。下面将分别对Android开发环境配置、Android基础知识以及Android应用开发的关键概念进行详细介绍。 首先,...
除此之外,Android的异步处理机制,如AsyncTask和Handler/Looper,是处理耗时操作的关键。学习如何在主线程和子线程之间有效地协调,可以避免应用因阻塞UI而出现无响应的情况。 最后,Android的权限管理在6.0及以上...
在培训中,我还接触到了Android的异步处理,如AsyncTask和Handler/Looper机制,这些对于优化用户体验、避免主线程阻塞起到了重要作用。此外,Android的权限管理、多进程通信、服务和广播接收器等内容,让我对Android...