`
ko8e
  • 浏览: 52172 次
  • 性别: Icon_minigender_1
  • 来自: 龙岩
社区版块
存档分类
最新评论

Android之Handler的使用

阅读更多

Handler的使用:

由于Handler运行在主线程中(UI线程),它与子线程可以通过Message对象来传递数据。

Handler的作用:

1.安排消息或Runnable在某个主线程中某个地方执行。

2.安排一个动作在不同的线程中执行。

 

代码一、

package com.ko8e;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;

public class MyActivity extends Activity {
    /** Called when the activity is first created. */
    private ProgressBar progressbar = null;
    private Button button = null;
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        progressbar = (ProgressBar) findViewById(R.id.progressbar);
        button = (Button) findViewById(R.id.button);
        
        button.setOnClickListener(new Button.OnClickListener() {
			public void onClick(View v) {
				progressbar.setVisibility(View.VISIBLE);
				handler.post(runnable);
			}});
	}

	Handler handler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			progressbar.setProgress(msg.arg1);
			super.handleMessage(msg);
		}
	};
	
	private Runnable runnable = new Runnable() {
		int i = 0;
		public void run() {
			// TODO Auto-generated method stub
			i = i + 10;
			Message msg = handler.obtainMessage();
			msg.arg1 = i;
			handler.sendMessage(msg);
			if(i == progressbar.getMax()) {
				handler.removeCallbacks(runnable);
				progressbar.setVisibility(View.GONE);
			}
		}
	};
}

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/progressbar"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:visibility="gone"
	style="?android:attr/progressBarStyleHorizontal"
	/>
<Button
	android:id="@+id/button"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="button"
	/>
</LinearLayout>

 

 

 

 

代码二、

package com.mnkjxy;

import android.app.Activity;
import android.app.ProgressDialog;
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;

public class MyActivity extends Activity {

	private Button button = null;
	private ProgressDialog dialog = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		button = (Button) findViewById(R.id.button);
		button.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				processThread();
			}
		});
	}

	private Handler handler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			super.handleMessage(msg);
			// 程序运行到这里关闭
			dialog.dismiss();
		}
	};

	public void processThread() {
		dialog = ProgressDialog.show(MyActivity.this, "正在下载资源", "请稍等···");
		new Thread() {
			public void run() {
				longTimeWait();
				handler.sendEmptyMessage(0);
			}
		}.start();
	}

	public void longTimeWait() {
		try {
			Thread.sleep(10000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

}

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"
    >
<TextView  
	android:id="@+id/view"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<Button
	android:id="@+id/button"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="@string/button"
	/>    
</LinearLayout>

 

 

分享到:
评论

相关推荐

    Android的Handler使用方法总结

    Android的Handler使用方法总结,不错的文档,跟大家分享分享

    android-Handler的使用

    【Android Handler 使用详解】 Handler 是 Android 平台中用于处理线程间通信的关键组件,尤其在涉及 UI(用户界面)更新时,它扮演着至关重要的角色。在 Android 应用程序启动时,系统会默认创建一个主线程,也...

    Android中handler的使用

    总结来说,Handler是Android中处理多线程和UI同步的核心工具,理解其工作原理和使用方法对于开发高效、稳定的Android应用至关重要。通过熟练掌握Handler,开发者可以更好地控制应用的执行流程,确保UI响应性和性能。...

    android demo,使用Handler的postDelay,Runnable run实现延时3秒的splash。

    本示例中的“android demo”就是关于如何利用Handler的`postDelayed`方法和`Runnable`接口来实现一个延时3秒的Splash Screen。下面将详细解释这个过程以及涉及的技术点。 1. **Handler**: Handler是Android中处理...

    Android_Handler详解(一)

    总结起来,Handler是Android中进行线程间通信的重要工具,合理使用它可以有效地提升应用的性能和用户体验。在实际开发中,应结合使用Handler、Looper和Thread,以实现高效的多线程编程。在后续章节,我们将更深入地...

    android 中Handler 的几种写法

    基本的`Handler`使用通常涉及到创建`Handler`对象,然后在后台线程中通过`Looper`和`Message`与之交互。以下是一个简单的例子: ```java // 在主线程中创建Handler Handler mHandler = new Handler() { @...

    【Android开发入门】Android线程之Handler

    Handler是Android中处理消息和调度任务的对象,它通常与Looper和Message配合使用,实现线程间的通信。主线程中默认有一个Looper对象,负责接收和分发Message,而Handler则用来发送Message到Looper,从而实现主线程的...

    Android_Handler消息处理机制

    在Android系统中,Handler、Message和Looper构成了一个关键的异步通信机制,即Handler消息处理机制。这个机制允许Android应用程序在不同的线程间传递消息,处理UI更新等操作,是多线程编程中的重要组成部分。下面...

    android中Handler的使用方法和总结

    Android 中 Handler 的使用方法和总结 Handler 是 Android 中的一种非常重要的组件,它起到了十分重要的作用。Handler 主要用于异步消息的处理,当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回...

    模拟Android Handler机制Demo

    【Android Handler机制】是Android应用程序中用于线程间通信的核心组件,它与Looper和Message紧密配合,实现消息的发送、处理以及线程间的同步。在Android应用开发中,尤其是涉及到UI更新时,Handler机制显得尤为...

    Android利用handler在线程之间传递代码

    总结来说,Handler机制是Android多线程编程的关键工具之一,它使得开发者能够方便地在线程间传递信息,实现异步处理,确保UI线程不被阻塞,提升用户体验。熟练掌握Handler的使用,对任何Android开发者都至关重要。

    android handler的一些测试

    在Android系统中,每个线程都有一个与之关联的`Looper`,它是消息队列的循环器,负责取出`Message`并交给相应的`Handler`处理。默认情况下,只有主线程(UI线程)有一个运行的`Looper`。要在线程中使用`Handler`,...

    android handler runnable使用实例(关键是内部run中停止)

    在Android应用开发中,Handler、Runnable和Looper是三个非常重要的组件,它们构成了Android的消息处理机制。这个机制使得UI线程可以非阻塞地处理来自其他线程的消息,从而避免了UI冻结,提升了用户体验。下面我们将...

    Android review handler的使用

    在这里,我们将详细探讨`Android Handler`的使用以及它在实际应用中的作用。 `Handler`类是Android中的一个核心组件,它主要用于在线程间发送和处理消息。在Android系统中,主线程(UI线程)负责处理用户交互,而...

    Android_Handler的线程队列Demo

    在Android应用开发中,Handler、Looper和Message是实现线程间通信的重要机制。这个"Android_Handler的线程队列Demo"旨在演示如何有效地利用Handler来处理线程间的通信,特别是主线程(UI线程)与工作线程之间的交互...

    androidHandler测试的demo

    在“androidHandler测试的demo”中,我们可以预期包含以下内容: 1. 创建自定义`Handler`子类:这个子类可能重写了`handleMessage(Message msg)`方法,根据`msg.what`的值执行不同的操作,比如更新UI元素或执行特定...

    Android中的Handler的具体用法

    本文将深入探讨`Handler`的工作原理、如何使用以及它在Android应用程序中的实际应用。 `Handler`机制是Android系统为了实现线程间通信而设计的一种模式,主要包含三部分:`Handler`、`Message`和`Looper`。`Handler...

    android多线程handler/message机制详解

    Android 多线程机制是 Android 应用程序中最重要的组件之一,它允许应用程序在后台执行一些操作,而不影响用户的交互体验。在 Android 中,多线程机制是基于 Handler 和 Message 机制的。 Handler 是什么?Handler ...

    android中的handler的使用方法

    本文将深入探讨Android中的Handler机制及其使用方法。 首先,理解Handler的基本概念。Handler是Android消息处理系统的一部分,它与Looper和Message紧密协作,用于在不同线程之间传递消息和执行任务。通常,主线程...

    在Android中使用AsyncTask和Handler线程间交互的方式

    在Android中使用AsyncTask和Handler线程间交互的方式,详情参见博客:http://www.cnblogs.com/plokmju/p/android_AsyncTask.html和http://www.cnblogs.com/plokmju/p/android_Handler.html

Global site tag (gtag.js) - Google Analytics