个人理解:
Handler 关联主线程
Message 子线程通过Message传递消息与主线程沟通,主线程通过关联的Handler去处理子线程的Message
一个Handler会允许你发送和处理Message或者Runnable对象关联到一个线程的消息队列MessageQueue中,每一个Handler的实例都会关联一个单一的线程和那个线程的消息队列中。当你创建一个一个新的Handler,它会绑定到你创建的线程和这个线程消息队列中。并且指向好它,它会让消息传递到关联好它的消息队列中,当它从消息队列出队的时候执行它。
对于Handler来说有两种主要的方式: 1. 计划好消息和Runnable将来的某一个时间点来执行它 2. 从一个不同的线程中执行Handler的入队操作。分发消息由下面的几个方法完成:
1) post(Runnable),
2) postAtTime(Runnable, long),
3) postDelayed(Runnable, long),
4) sendEmptyMessage(int),
5) sendMessage(Message),
6) sendMessageAtTime(Message, long),
7) sendMessageDelayed(Message, long)
程序处理的时候通过post和sendMessage的方式
使用实例:
1 主线程中绑定Handler处理器 2 通过启动一个线程,创建不断修改的消息,然后通过Handler的sendMessage去处理消息 3 通过Handler可以 对主线程进行处理 private void showPROGRESS() { requestWindowFeature(Window.FEATURE_PROGRESS); setProgressBarVisibility(true); setContentView(R.layout.main); setTitle("进度条Title"); getWindow().setFeatureInt(Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON); // 通过线程来改变ProgressBar的值 new Thread(new Runnable() { public void run() { for (int i = 0; i < 10; i++) { try { Thread.sleep(5000); Message m = Message.obtain(); m.what = (i + 1) * 20; WindowFeatureDemoActivity.this.myMessageHandler.sendMessage(m); } catch (Exception e) { e.printStackTrace(); } } } }).start(); } Handler myMessageHandler = new Handler() { // @Override public void handleMessage(Message msg) { // 设置标题栏中前景的一个进度条进度值 ,进度条默认10000为100% setProgress(100 * msg.what); // 设置标题栏中后面的一个进度条进度值 setSecondaryProgress(100 * msg.what + 10); super.handleMessage(msg); } };
相关推荐
但是在android的学习中,经常会在一些demo中看到Handler与Message的一些使用,所以Handler与Message的学习也是有必要了。至于学多少,笔者还是比较坚持自己的看法,“用多少,学多少”,毕竟已经有了AsyncTask如此...
在Android应用开发中,HandlerMessage1_HandlerMessage是一个关键的主题,涉及到Android系统中的消息处理机制,尤其是Handler、Message和Looper的使用。这些组件是Android异步编程的重要组成部分,用于解决UI线程与...
【Android应用源码之HandlerMessage1.zip】是一个与Android应用程序开发相关的压缩包,重点在于讲解Handler和Message在Android系统中的使用。在这个项目中,我们可能会看到一个简单的Android应用实例,该实例展示了...
在Android应用开发中,HandlerMessage是一个关键的概念,用于在主线程和子线程之间...通过深入研究"Android应用源码之HandlerMessage3.zip",开发者可以更直观地学习到这些概念的实际运用,提升自己的Android编程技能。
本资料“应用源码之HandlerMessage1.zip”聚焦于这一主题,提供了源码级别的学习材料,帮助开发者深入理解Android异步编程的核心。 首先,我们来探讨`Handler`。`Handler`是Android中的一个类,它允许开发者在不同...
通过对`HandlerMessage2.zip`中的源码进行深入学习,你可以更好地理解和掌握Android中的线程通信机制,这对于进行复杂的UI更新和异步任务处理至关重要。同时,这样的实践也能提升你的毕业设计质量和代码能力。
通过学习和分析“应用源码之HandlerMessage3”的源码,开发者可以更好地理解和掌握Android中线程通信的核心技术,提升应用的性能和用户体验。在毕业设计或代码学习项目中,熟练运用这些知识,能够解决许多实际问题,...
在"安卓Android源码——HandlerMessage2.rar"中,你可能会找到关于这些概念的实际代码示例,这将有助于你从实践中学习和掌握`Handler`、`Message`的使用方法。通过分析和调试这些代码,你将能够更好地理解Android...
通过对 `HandlerMessage1.rar` 中的源码进行学习,开发者可以更深入地了解这些组件的内部实现,以及如何高效地利用它们来实现异步操作和线程间的通信。这将有助于提高安卓应用的性能和用户体验。
本学习源码着重关注的是Handler和Looper的交互过程,以及它们如何协同工作来处理应用程序中的消息。下面将详细阐述这些概念。 1. **Handler**:Handler是Android中用于在不同线程之间发送和处理消息的对象。开发者...
在Android开发中,异步处理是一项至关重要的技术,它能够帮助开发者解决主线程阻塞问题,提高应用的响应性和用户体验。Handler、Looper和MessageQueue是...通过不断学习和实践,你将能够更好地掌握这一核心技术。
在Android开发中,Handler是一种非常重要的机制,它用于在主线程中处理来自其他线程的消息,从而实现线程间通信,尤其是对UI...通过实践和学习更多关于Handler的知识,开发者可以更好地掌握Android应用的异步编程技巧。
在Android系统中,Handler、Looper和Message构成了一个用于线程间通信的重要机制。这个机制使得UI线程可以处理来自其他线程的消息,从而避免了直接在非UI线程操作UI组件,防止应用出现ANR(Application Not ...
Handler是Android消息传递机制的一部分,它允许我们发送和处理Message或Runnable对象。通常,我们在主线程中创建一个Handler实例,然后在其他线程中通过这个Handler发送消息。Handler有`handleMessage(Message)`方法...
通过学习和分析这些代码,你可以更好地理解`Handler`的工作原理和使用方式,从而在自己的项目中灵活运用这一强大的工具。记住,合理利用`Handler`可以有效避免ANR(Application Not Responding)错误,提升应用的...
Handler、Looper和MessageQueue是Android系统中用于实现线程间通信的关键组件,它们共同构成了Android的消息处理机制。这里我们将深入探讨这些概念,并通过一个仿写Handler机制的例子来理解其工作原理。 首先,我们...
本文将深入探讨Android中的线程模型,重点讲解Handler、Message Queue和AsyncTask,并提供修改Button样式的示例以及如何将这些概念整合到一个易用的方案中。 1. **Android线程模型** Android系统的主线程,也称为...
这就引出了如何在后台线程完成工作并安全地更新UI的问题,这时就需要用到Handler、Looper和Message三个关键组件。 二、Handler机制 1. Handler:是消息处理的核心,它定义了一个消息队列,并处理来自该队列的消息...
`Handler`是Android中用于消息传递和线程间通信的一种机制,通常配合`Looper`和`Message`一起工作。当在后台线程(如`Thread`或`AsyncTask`)中执行任务时,可以通过`Handler`将结果发送到主线程,并在主线程中更新...