HandlerActivity.java
package txlong.handler;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
public class HandlerActivity extends Activity {
private Button start, end, show;
private ProgressBar progress;
private Handler handler = new Handler();
private int tmp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
start = (Button) findViewById(R.id.start);
end = (Button) findViewById(R.id.end);
show = (Button) findViewById(R.id.show);
progress = (ProgressBar) findViewById(R.id.progress);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handler.post(updateDate);
}
});
end.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handler.removeCallbacks(updateDate);
}
});
show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
progress.setVisibility(View.VISIBLE);
progress.setProgress(0);
handler.post(greate);
}
});
}
Runnable updateDate = new Runnable() {
@Override
public void run() {
Log.i("flag", "again");
handler.postDelayed(updateDate, 3000);
}
};
Runnable greate = new Runnable() {
@Override
public void run() {
if (progress.getProgress() < 100) {
tmp += 10;
progress.setProgress(tmp);
progress.setSecondaryProgress(tmp + 10);
handler.postDelayed(greate, 800);
} else {
handler.removeCallbacks(greate);
progress.setVisibility(View.GONE);
tmp = 0;
}
}
};
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ProgressBar android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="200dip"
android:layout_height="wrap_content"
android:visibility="gone"/>
<Button android:id="@+id/start"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="start"
/>
<Button android:id="@+id/end"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="end"
/>
<Button android:id="@+id/show"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="show"
/>
</LinearLayout>
分享到:
相关推荐
Android的Handler使用方法总结,不错的文档,跟大家分享分享
Android 中 Handler 的使用方法和总结 Handler 是 Android 中的一种非常重要的组件,它起到了十分重要的作用。Handler 主要用于异步消息的处理,当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回...
总结来说,Handler是Android中处理多线程和UI同步的核心工具,理解其工作原理和使用方法对于开发高效、稳定的Android应用至关重要。通过熟练掌握Handler,开发者可以更好地控制应用的执行流程,确保UI响应性和性能。...
通过理解以上知识点,开发者可以灵活地在Android应用中使用`Handler`进行线程间通信,高效地处理异步任务和UI更新。在实际开发中,结合`Handler`、`Looper`、`Thread`以及`Runnable`,可以构建出复杂而稳定的多线程...
【Android Handler 使用详解】 Handler 是 Android 平台中用于处理线程间通信的关键组件,尤其在涉及 UI(用户界面)更新时,它扮演着至关重要的角色。在 Android 应用程序启动时,系统会默认创建一个主线程,也...
本示例中的“android demo”就是关于如何利用Handler的`postDelayed`方法和`Runnable`接口来实现一个延时3秒的Splash Screen。下面将详细解释这个过程以及涉及的技术点。 1. **Handler**: Handler是Android中处理...
本篇将深入探讨Handler的基本概念、使用方法以及其在多线程环境中的作用。 1. Handler是什么? Handler,中文可译为“处理器”,在Android系统中主要负责处理来自其他线程的消息。它通过发送和处理Message对象,...
在上述代码中,我们看到了如何使用Handler和Runnable来实现一个简单的线程启动和停止的逻辑,同时通过postDelayed方法实现了一个延时任务的循环执行。这种模式在Android开发中非常常见,它体现了Android UI编程的单...
在Android应用开发中,Handler、Runnable和Looper是三个非常重要的组件,它们构成了Android的消息处理机制。这个机制使得UI线程可以非阻塞地处理来自其他线程的消息,从而避免了UI冻结,提升了用户体验。下面我们将...
* 创建一个Handler对象,使用Handler对象h把Runnable的对象r压入队列 * 此时只会会执行Run()方法,但是不会开启新的线程 */ //Handler h = new Handler(); //h.post(r); /* * 在java中真正开启...
本文将深入探讨`Handler`的工作原理、如何使用以及它在Android应用程序中的实际应用。 `Handler`机制是Android系统为了实现线程间通信而设计的一种模式,主要包含三部分:`Handler`、`Message`和`Looper`。`Handler...
本文将深入探讨`Handler`的使用,包括其工作原理、创建与使用方法以及常见应用场景。 ### 1. `Handler`的工作原理 `Handler`、`Looper`和`Message`三者构成了Android中的消息处理机制。当在工作线程中创建一个`...
如果要在其他线程中使用Handler,就需要手动调用Looper.prepare()初始化Looper,然后用Looper.loop()启动消息循环。 Handler消息处理机制的工作流程如下: 1. 在需要发送消息的地方,通过Handler实例的sendMessage...
如果指定了Callback对象,那么在处理Message时会优先使用Callback的handleMessage方法,否则会调用Handler自身的handleMessage方法。 Message是Handler机制中的关键数据结构,它封装了待处理的数据和操作指令。...
如果要在其他线程中使用Handler,需要手动调用Looper.prepare()和Looper.loop()来创建并启动Looper。 Handler的使用流程主要包括以下步骤: 1. **创建Handler**:首先,你需要创建一个Handler对象,通常在主线程中...
在Android开发中,`Handler`、`Looper`和`Message`是实现线程间通信...理解其工作原理和正确使用方法,对于编写高效、稳定的Android应用至关重要。通过`HandlerTest`这样的实践,开发者可以更好地掌握`Handler`的运用。
在Android应用开发中,Handler、Looper和Message是实现线程间通信的重要机制。这个"Android_Handler的线程队列Demo"旨在演示如何有效地利用Handler来处理线程间的通信,特别是主线程(UI线程)与工作线程之间的交互...
Handler是Android中的一个消息处理类,它与Looper和Message紧密配合,形成了一个消息队列。通常,主线程(UI线程)中有一个默认的Looper在后台不断循环地检查Message队列,一旦发现有新消息,就会调用Handler的`...