`
阅读更多

                             同学们一定遇到过这样的问题,在另一个类中处理好的数据,想要更新到主线程UI上

会发现更新失败,而在java平时编程中是可以的,其实这是安卓特有的规定,子线程不能直接将数据更新到主线程UI上,那么我们怎么做到去传递消息呢?

        这里就要用到Handler 和Message了。这里我们建立一个实例看看怎么用,这里设置每隔1秒在主线程更新递增。

定义布局管理器:activity_main

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

</RelativeLayout>

 

主Activity函数代码:

public class MainActivity extends Activity {

	private static int count=0;
	public static final int SET=1;//之所以定义final,是因为在内部类也能使用,设置what标记
	private TextView info=null;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		this.info=(TextView)super.findViewById(R.id.info);
	
		Timer timer=new Timer();//定义调度器
		timer.schedule(new MyTask(), 0,1000);//立即开始,每隔一秒增长
	}
	/*
	 * 设置一个Handler对象
	 */
	private Handler myHandler=new Handler(){
		public void handleMessage(android.os.Message msg){
			switch(msg.what){//判断操作类型
			case SET:
			MainActivity.this.info.setText("ee"+count++);//设置文本操作
			}
		}
		
	};
	/*
	 * 定义定时调度的具体实现类,相当于子线程
	 */
	private class MyTask extends TimerTask{

		@Override
		public void run() {
			Message msg=new Message();//定义Message
			msg.what=SET;//类型
			MainActivity.this.myHandler.sendMessage(msg);//发送消息
			
		}
		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

 实现效果如下:




 
 

  • 大小: 16 KB
  • 大小: 16.7 KB
0
1
分享到:
评论
4 楼 梳子不爱头发 2015-05-01  
砺雪凝霜 写道
可以看下handler的源码,可以深入理解下handler

嗯好
3 楼 砺雪凝霜 2015-05-01  
可以看下handler的源码,可以深入理解下handler
2 楼 梳子不爱头发 2015-05-01  
嗯嗯,主要为了实现一秒增加一个数的效果
1 楼 砺雪凝霜 2015-04-30  
完全没有必要去用定时器,仅仅有handler就可以实现

相关推荐

    android多线程handler/message机制详解

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

    android handlerMessage 消息机制

    使用处理程序延迟主线程上的工作;...我们看到,一个Message经由Handler的发送,MessageQueue的入队,Looper的抽取,又再一次地回到Handler的怀抱中。而绕的这一圈,也正好帮助我们将同步操作变成了异步操作。

    Thread,Looper,Handler,Message,MessageQueue,MessagePool之间的关系

    在Android系统中,线程(Thread)、Looper、Handler、Message以及MessageQueue和MessagePool是实现异步消息处理机制的关键组件,它们共同构建了一个高效的事件驱动模型。这些组件的关系紧密,协同工作,使得Android...

    Handler Looper MessageQueue 源码解析

    在Android系统中,Handler、Looper和MessageQueue是实现线程间通信的核心组件,它们共同构建了一个消息处理机制。本文将深入解析这三者的源码,帮助你理解它们的工作原理,并教你如何手写一套自己的Handler系统。 ...

    Android的Message机制(Handler、Message、Looper)

    通过以上介绍可以看出,Android的Message机制是通过`Handler`、`Message`、`Looper`和`MessageQueue`四个关键组件协同工作来完成的。这种机制不仅使得应用程序内部通信变得更加高效有序,同时也为开发者提供了一种...

    android线程handler、message、looperDEMO

    `Handler`、`Message`和`Looper`是Android系统提供的一个关键机制,用于在不同的线程间进行通信,特别是主线程(UI线程)与工作线程间的交互。下面将详细解释这三个组件以及它们如何协同工作。 1. **Handler...

    Android 之 Looper、MessageQueue、Handler 与消息循环

    本文详细介绍了Android中消息处理机制的核心组件Looper、MessageQueue和Handler的工作原理及其实现细节。理解这些概念有助于开发者更好地设计和实现多线程应用程序,提高程序的性能和用户体验。通过合理利用这些组件...

    Android_Handler消息处理机制

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

    Message,MessageQueue,Looper,Handler详解

    综上所述,Message、MessageQueue、Looper和Handler这四个组件共同构成了Android应用程序中处理消息的基本机制。通过它们之间的相互协作,使得应用程序能够在不同的线程间高效地传递和处理消息,从而实现了复杂的...

    Handler消息机制和异步加载

    Handler消息机制是Android系统中处理线程间通信的重要方式,它与Looper和Message紧密关联,构建了一套完整的异步处理模型。在这个模型中,Handler主要负责发送和处理Message,Looper负责在一个线程中循环地读取...

    9Handler&AsyncTask实验报告

    实验报告“9Handler&AsyncTask”专注于Android平台上的异步处理技术,主要涉及两种方法:Handler消息传递机制和AsyncTask。这两个组件都是Android系统中处理长时间运行任务的关键工具,以避免阻塞主线程并保持用户...

    handler消息机制完整版

    这一机制主要涉及到四个关键角色:Message、Message Queue、Handler和Looper。下面我们将深入探讨这些概念及其工作原理。 1. **Message(消息)**:Message是Android中用于线程间通信的数据单元,它封装了需要传递...

    Android Handler Looper Message 使用示例

    在主线程即UI线程外,新建一个Looper线程,并用Messenger和Handler来处理message和posted runnable。程序中,在负线程中默认加了一个3s的线程等来,来帮助理解sent message和post runnable之间的同步机制。所以在按...

    android的消息处理机制(图+源码分析)——Looper,Handler,Message

    android源码中包含了...android的消息处理有三个核心类: Looper,Handler和Message。 其实还有一个Message Queue(消息队列) , 但是MQ被封装到Looper里面了, 我们不会直接与 MQ打交道, 因此我没将其作为核心类。

    Android Handler 异步消息机制的例子

    在Android开发中,Handler、Looper和Message是实现异步消息处理的关键组件,它们共同构成了Android的消息传递机制。这个机制使得应用程序能够优雅地处理UI线程与后台线程之间的通信,避免了因直接操作UI线程而导致的...

    Handler机制

    Handler机制就在此背景下应运而生,它允许工作线程向UI线程发送消息,以便在合适的时间更新UI。 Handler的核心组件包括Handler、Message和Looper。以下是对这些组件的详细解释: 1. **Handler(处理器)**:...

    Android handler message奇怪用法详解

    8. **Message的target属性**:除了Handler外,Message还可以设置其他目标,比如其他实现了Runnable接口的对象,这样可以在不直接使用Handler的情况下分发消息。 9. **自定义Looper**:虽然默认的Looper已经满足...

    Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系 - Hongyang -

    【Android异步消息处理机制】深入理解Looper、Handler、Message三者关系 在Android系统中,异步消息处理机制是实现线程间通信和保证UI线程安全的关键组件。它涉及到了三个核心类:Looper、Handler和Message。这篇...

    Handler异步消息处理机制创建图加载类

    Handler异步消息处理机制在Android开发中扮演着重要的角色,特别是在处理UI更新和与主线程交互时。在“Handler异步加载图片 GridView 上拉刷新 下拉刷新”这个主题中,我们将深入探讨如何利用Handler实现图片的异步...

    handler消息机制详细教程

    ### Handler消息机制详解 #### 一、Handler 概述与重要性 在Android开发中,**Handler** 是一套被广泛使用的消息处理机制,主要用于解决线程间通信的问题,特别是涉及UI更新的操作。根据给定文件的标题“handler...

Global site tag (gtag.js) - Google Analytics