同学们一定遇到过这样的问题,在另一个类中处理好的数据,想要更新到主线程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; } }
实现效果如下:
相关推荐
Android 多线程Handler/Message机制详解 Android 多线程机制是 Android 应用程序中最重要的组件之一,它允许应用程序在后台执行一些操作,而不影响用户的交互体验。在 Android 中,多线程机制是基于 Handler 和 ...
使用处理程序延迟主线程上的工作;...我们看到,一个Message经由Handler的发送,MessageQueue的入队,Looper的抽取,又再一次地回到Handler的怀抱中。而绕的这一圈,也正好帮助我们将同步操作变成了异步操作。
在Android系统中,线程(Thread)、Looper、Handler、Message以及MessageQueue和MessagePool是实现异步消息处理机制的关键组件,它们共同构建了一个高效的事件驱动模型。这些组件的关系紧密,协同工作,使得Android...
在Android系统中,Handler、Looper和MessageQueue是实现线程间通信的核心组件,它们共同构建了一个消息处理机制。本文将深入解析这三者的源码,帮助你理解它们的工作原理,并教你如何手写一套自己的Handler系统。 ...
通过以上介绍可以看出,Android的Message机制是通过`Handler`、`Message`、`Looper`和`MessageQueue`四个关键组件协同工作来完成的。这种机制不仅使得应用程序内部通信变得更加高效有序,同时也为开发者提供了一种...
`Handler`、`Message`和`Looper`是Android系统提供的一个关键机制,用于在不同的线程间进行通信,特别是主线程(UI线程)与工作线程间的交互。下面将详细解释这三个组件以及它们如何协同工作。 1. **Handler...
本文详细介绍了Android中消息处理机制的核心组件Looper、MessageQueue和Handler的工作原理及其实现细节。理解这些概念有助于开发者更好地设计和实现多线程应用程序,提高程序的性能和用户体验。通过合理利用这些组件...
在Android系统中,Handler、Message和Looper构成了一个关键的异步通信机制,即Handler消息处理机制。这个机制允许Android应用程序在不同的线程间传递消息,处理UI更新等操作,是多线程编程中的重要组成部分。下面...
综上所述,Message、MessageQueue、Looper和Handler这四个组件共同构成了Android应用程序中处理消息的基本机制。通过它们之间的相互协作,使得应用程序能够在不同的线程间高效地传递和处理消息,从而实现了复杂的...
Handler消息机制是Android系统中处理线程间通信的重要方式,它与Looper和Message紧密关联,构建了一套完整的异步处理模型。在这个模型中,Handler主要负责发送和处理Message,Looper负责在一个线程中循环地读取...
实验报告“9Handler&AsyncTask”专注于Android平台上的异步处理技术,主要涉及两种方法:Handler消息传递机制和AsyncTask。这两个组件都是Android系统中处理长时间运行任务的关键工具,以避免阻塞主线程并保持用户...
这一机制主要涉及到四个关键角色:Message、Message Queue、Handler和Looper。下面我们将深入探讨这些概念及其工作原理。 1. **Message(消息)**:Message是Android中用于线程间通信的数据单元,它封装了需要传递...
在主线程即UI线程外,新建一个Looper线程,并用Messenger和Handler来处理message和posted runnable。程序中,在负线程中默认加了一个3s的线程等来,来帮助理解sent message和post runnable之间的同步机制。所以在按...
android源码中包含了...android的消息处理有三个核心类: Looper,Handler和Message。 其实还有一个Message Queue(消息队列) , 但是MQ被封装到Looper里面了, 我们不会直接与 MQ打交道, 因此我没将其作为核心类。
在Android开发中,Handler、Looper和Message是实现异步消息处理的关键组件,它们共同构成了Android的消息传递机制。这个机制使得应用程序能够优雅地处理UI线程与后台线程之间的通信,避免了因直接操作UI线程而导致的...
Handler机制就在此背景下应运而生,它允许工作线程向UI线程发送消息,以便在合适的时间更新UI。 Handler的核心组件包括Handler、Message和Looper。以下是对这些组件的详细解释: 1. **Handler(处理器)**:...
8. **Message的target属性**:除了Handler外,Message还可以设置其他目标,比如其他实现了Runnable接口的对象,这样可以在不直接使用Handler的情况下分发消息。 9. **自定义Looper**:虽然默认的Looper已经满足...
【Android异步消息处理机制】深入理解Looper、Handler、Message三者关系 在Android系统中,异步消息处理机制是实现线程间通信和保证UI线程安全的关键组件。它涉及到了三个核心类:Looper、Handler和Message。这篇...
Handler异步消息处理机制在Android开发中扮演着重要的角色,特别是在处理UI更新和与主线程交互时。在“Handler异步加载图片 GridView 上拉刷新 下拉刷新”这个主题中,我们将深入探讨如何利用Handler实现图片的异步...
### Handler消息机制详解 #### 一、Handler 概述与重要性 在Android开发中,**Handler** 是一套被广泛使用的消息处理机制,主要用于解决线程间通信的问题,特别是涉及UI更新的操作。根据给定文件的标题“handler...