1. Handler 有原理队列
2. main.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:id="@+id/button_1"
android:text="first"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/button_2"
android:text="stop"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
2. 代码实现
package com.android.handler.activity;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
*
* @author liuqing
* @version 1.0
* @see Handler 的使用
*
*/
public class Android_chapter14handlerActivity extends Activity {
//开始按扭
private Button button_1;
//停止按扭
private Button button_2;
//消息队列
private Handler handler = new Handler();
Runnable postRunnable = new Runnable(){
@Override
public void run() {
System.out.println(" enter successfully...");
handler.postDelayed(postRunnable, 3000);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.button_1 = (Button) this.findViewById(R.id.button_1);
this.button_2 = (Button)this.findViewById(R.id.button_2);
this.button_1.setOnClickListener(new ButtonFirstListener());
this.button_2.setOnClickListener(new ButtonSecondListener());
}
private class ButtonFirstListener implements OnClickListener {
@Override
public void onClick(View v) {
handler.post(postRunnable);
}
}
private class ButtonSecondListener implements OnClickListener {
@Override
public void onClick(View v) {
handler.removeCallbacks(postRunnable);
}
}
}
3. 使用Handler 实现进度条
<?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" >
<ProgressBar
android:id="@+id/progreebar"
android:layout_width="fill_parent"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/start"
android:text="@string/start"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
package com.handler.progreebar.activtiy;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
/**
*
* @author liuqing
* @version 1.0
* @see Handler 的使用
*
*/
public class Android_chapter14handlerProgreeBarActivity extends Activity {
private ProgressBar progressBar;
private Button start;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
progressBar.setProgress(msg.arg1);
handler.post(runnable);
}
};
Runnable runnable = new Runnable(){
private int a;
@Override
public void run() {
a += 10;
//Obtain 获得Message
Message message = handler.obtainMessage();
//设置参数
message.arg1 = a;
try {
Thread.sleep(2000);
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//发送消息
handler.sendMessage(message);
if (a >= 100) {
System.out.println("exits !");
handler.removeCallbacks(runnable);
}
}};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
progressBar = (ProgressBar)findViewById(R.id.progreebar);
progressBar.setVisibility(0);
this.progressBar.setMax(100);
this.start = (Button)findViewById(R.id.start);
start.setOnClickListener(new StartListener());
}
private class StartListener implements OnClickListener {
@Override
public void onClick(View v) {
//加入到队列中
handler.post(runnable);
}
}
}
运行结果
- 大小: 9.8 KB
分享到:
相关推荐
Handler消息机制是Android系统中处理多线程通信的核心组件,它在应用程序开发中扮演着重要角色。通过Handler、Looper和Message三者之间的协同工作,开发者可以在主线程与子线程之间进行安全的数据传递和任务调度。 ...
Android 应用程序中,消息处理机制是其异步编程的核心组成部分,主要涉及三个关键组件:Handler、Message和Looper。这种机制使得应用可以有效地管理线程间的通信,避免阻塞主线程,提升用户体验。 首先,我们需要...
在Android应用开发中,Fragment和...正确理解和使用Handler能帮助开发者构建高效、稳定的Android应用程序。在实际开发中,还应结合其他通信方式,如Interface回调、EventBus、LiveData等,根据场景选择最适合的方法。
在这个“handler的简单示例”中,我们将深入探讨Handler的工作原理及其在异步更新UI中的应用。 首先,Handler的核心概念是消息队列和Looper。在Android系统中,每个线程都有一个Looper对象,它负责循环读取并分发...
本篇文章将详细讲解Handler的基本概念、工作原理以及如何在实际项目中应用。 首先,Handler的核心作用是在不同的线程间传递消息(Message)并执行相应的回调方法。在Android中,大部分UI操作必须在主线程(也称为UI...
通过理解以上知识点,开发者可以灵活地在Android应用中使用`Handler`进行线程间通信,高效地处理异步任务和UI更新。在实际开发中,结合`Handler`、`Looper`、`Thread`以及`Runnable`,可以构建出复杂而稳定的多线程...
本文将深入探讨`Handler`的工作原理及其在实际应用中的使用,旨在帮助开发者提升对Android中级应用的理解。 首先,理解`Handler`的核心概念是必要的。`Handler`、`Message`和`Looper`共同构成了Android的消息处理...
"JobHandler调度器"是一种广泛应用于分布式任务调度的框架,主要设计用于处理大规模并发和定时任务的场景。在这个系统中,JobHandler是核心组件,它负责执行具体的业务逻辑。下面我们将详细探讨JobHandler调度器的...
本压缩包"Android应用源码之HandlerMessage2_应用.zip"包含了关于如何在Android应用中使用Handler和Message来处理异步任务和更新UI的示例源代码。下面我们将深入探讨这两个核心组件以及它们在Android中的工作原理。 ...
在Android开发中,`Handler`是一个非常重要的组件,它用于处理UI线程之外的异步消息,实现线程间通信。...记住,合理利用`Handler`可以有效避免ANR(Application Not Responding)错误,提升应用的稳定性和性能。
本`Handler`推荐用法的示例,旨在帮助开发者理解和掌握如何有效地使用`Handler`来管理应用程序的异步任务和更新UI。 `Handler`的基本原理是基于消息队列(Message Queue)和Looper的机制。它由三部分组成:`Handler...
本文首先解释一下handler是用来干嘛的,然后通过例子介绍其在多线程中的应用。 什么是Handler handler通俗一点讲就是用来在各个进程之间发送数据的...handler应用多线程例子 我们这个例子是实现一个简单的词典功能。
在Android应用开发中,Handler是一种重要的线程通信机制,它与Looper、Message紧密配合,用于在不同的线程间传递消息,解决多线程同步问题。本篇将详细讲解Handler的使用,包括如何创建Handler对象、如何发送和处理...
在Android应用开发中,Activity是用户界面的主要载体,而Handler机制则是实现异步通信和更新UI的关键工具。本文将深入探讨在一个Activity中如何管理和处理多个Handler以及它们的消息流程。 首先,Handler是Android...
在实际应用中,用户可能会遇到的问题和解决方案可能包括: - 如果预览不正常,检查Foxit PDF Preview Handler是否已经正确安装,并确保Outlook有权限访问该插件。 - 如果出现渲染问题,可能需要更新到最新版本的...
errorHandler = require ( '../error-handler.js' ) , app = express ( ) , env = process . env , port = env . myapp_port || 3000 , http = require ( 'http' ) , server ; // Route that triggers a ...
总结起来,Handler是Android中进行线程间通信的重要工具,合理使用它可以有效地提升应用的性能和用户体验。在实际开发中,应结合使用Handler、Looper和Thread,以实现高效的多线程编程。在后续章节,我们将更深入地...
本文将深入解析Handler的工作原理、使用方法及其异步更新的应用场景。 首先,我们来理解一下Android中的线程模型。主线程(UI线程)负责处理用户界面的所有操作,如触摸事件、布局绘制等。而在执行耗时操作时,如果...
理解Handler、Looper和Message的源码对于开发高效、稳定的Android应用至关重要。通过深入学习这些核心组件,开发者能够更好地处理多线程间的通信,避免ANR,提高应用程序的响应速度和用户体验。在实际编程中,可以...