`
119568242
  • 浏览: 426929 次
  • 性别: Icon_minigender_1
  • 来自: 深圳/湛江
社区版块
存档分类
最新评论

Android菜鸟日记9 Handler队列

 
阅读更多
Android菜鸟日记9
Handler队列

Handler
1. 作用:消息队列  线程队列
2. 重点:
Handler调用Runnable实际是并不是开新线程 而是放入自己的线程中。
如果要开启线程 需要使用handlerThread获得looper对象并绑定到handler对象上。
3. 使用: 
线程队列
1. 先创建一个handler对象
2. 将要执行的动作写入线程的run中。(handler线程队列放入的是线程(Runnable|thread))
3. 调用handler的post方法把将要执行的线程对象加添进线程队列。
EX:如果想线程不断执行的话可以自run方法中加入handler.post/postDelayed调用当前的runnable,实现递归(也就是执行的方法体中 直接会间接的重新调用自己的方法实现不断的循环执行此方法)。

消息队列
1. 通过给new handler 覆写
public void handleMessage(Message msg)
{
           ……
}
来实现接受message信息
2. 通过handler对象.obtainMessage来获得Mesaage对象
Message msg=updateHandler.obtainMessage();
3. 通过handler对象.sendMessage(Message msg)来发送message到消息队列
handler对象.sendMessage(msg)
然后将message加入到消息队列(先进先出)被handleMessage接收。
PS:创建handler时 复写handleMessage 方法(匿名内部类|继承handler的类 复写handleMessage)
4. 如果要实现递归则吧发送放入线程然后每次就收到message都将线程再放入线程队列。(可用于实现进度条ProgressBar变化)

4. handler 与 handlerThread
说明:
1.因为handler post入Runnable对象其实是没用创建新的线程的。所以android提供了handlerThread来弥补。
2.hanlderThread可以提供looper对象。Looper对象是用来循环处理消息队列的。
3.hanlderThread需要Start来开启。
4.开启后获取looper对象(必须start后获取looper否则会为空) 并把handler绑定到looper 对象上(通过handler有参构造),
Looper就会按照handler的handleMessage处理消息队列了。
5.这样handler就在looper的所在的线程中执行了。

5.在handler中使用message
通过 handler对象 . obtainMessage()方法获得message 对象。
发送message对象时有两种:
1.handler对象.sendMessage(msg);  //发送给handler对象
2.msg对象. sendToTarget();    //发送给创建msg的对象

6.Message携带数据
Msg.arg1; 只能携带int。
Msg.obj;  携带obj对象。
Msg.setDate(Bundle x)携带Bundle对象。

7.Bundle 束
Bundle对象类似于HashMap
不同的是HashMap的键是任意的。
而bundle的键必须是stiring
放入数据
Bundle temp=new Bundle();
temp.putString("name", "wenxiu");
temp.putInt("age", 19);
读取数据
Bundle temp_h=msg.getData();
String name=temp_h.getString("name")
Int i=temp_h.getInt("age")


2011-8-14
poolo
  • 大小: 7.8 KB
分享到:
评论

相关推荐

    Android_Handler的线程队列Demo

    这个"Android_Handler的线程队列Demo"旨在演示如何有效地利用Handler来处理线程间的通信,特别是主线程(UI线程)与工作线程之间的交互。下面我们将深入探讨相关知识点。 首先,了解Handler的基本概念。Handler是...

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

    - 使用Handler的`postDelayed`方法,将Runnable对象加入消息队列,并设置延迟时间,例如`handler.postDelayed(this, 3000);` - 在SplashActivity的onDestroy或onPause方法中,调用`removeCallbacksAndMessages...

    android 更新 UI 线程 handler

    `sendMessage()`可以在任何线程中调用,将消息放入消息队列,而`handleMessage()`则在Handler创建时指定的线程(通常是主线程)中运行。 为了更新UI,我们通常会在工作线程中创建一个Runnable对象,然后通过...

    Android代码-android-weak-handler

    Android Weak Handler Memory safer implementation of android.os.Handler Problem Original implementation of Handler always keeps hard reference to handler in queue of execution. Any object in Message or...

    Android_Handler详解(一)

    在Android开发中,Handler是一个至关重要的组件,它与线程、消息队列和Looper紧密关联,用于实现不同线程间的通信。本篇将深入探讨Handler的基本概念、使用方法以及其在多线程环境中的作用。 1. Handler是什么? ...

    Android源代码:HandlerDemo

    在Android开发中,`Handler`是一个至关重要的组件,它用于在主线程中处理来自其他线程的消息,确保UI更新操作的正确执行。本项目“Android源代码:HandlerDemo”将深入探讨`Handler`机制及其在多线程环境中的应用。 ...

    android多线程handler/message机制详解

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

    androidHandler测试的demo

    `Looper`是每个线程中的消息循环,负责从消息队列中取出`Message`并交给相应的`Handler`处理。主线程(UI线程)默认已经有一个运行的`Looper`,而在其他线程中,我们需要手动调用`Looper.prepare()`初始化`Looper`,...

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

    1. Looper:每个线程都有一个MessageQueue(消息队列),Looper是消息循环器,它会不断从MessageQueue中取出Message并交给相应的Handler进行处理。主线程默认有Looper,而子线程需要手动调用`Looper.prepare()`和`...

    Android_Handler消息处理机制

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

    android 中Handler 的几种写法

    在Android开发中,`Handler`是一个至关重要的组件,它用于在主线程中处理来自其他线程的消息,确保UI更新和事件处理的同步性。本文将详细介绍`Handler`的几种常见写法,以及如何使用`Handler.Callback`进行消息处理...

    android 多线程 looper handler

    Android 多线程 Looper Handler Android 操作系统中,多线程是一种常见的编程技术,通过使用多线程,可以提高应用程序的响应速度和效率。在 Android 中,多线程可以分为两种:有消息循环的线程和没有消息循环的线程...

    android-Handler的使用

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

    模拟Android Handler机制Demo

    【Looper】是Android中的一个类,它在一个线程中循环读取MessageQueue(消息队列),一旦发现有Message,就将其传递给相应的Handler进行处理。每个线程都有自己的Looper,但默认情况下只有主线程(UI线程)有一个...

    Android线程模式(handler,thread,looper)

    3. **Looper**:Looper是Android中的消息循环器,它负责从消息队列中取出消息并分发给对应的Handler。每个线程都有一个Looper实例,但默认只有主线程的Looper是激活的。在子线程中,我们需要调用`Looper.prepare()`...

    Android Studio通过Handler制作简单的计时器

    本教程将介绍如何使用Android Studio和Handler组件来创建一个简单的计时器应用。Handler是Android中的一个关键组件,它允许开发者在不同的线程之间发送和处理消息,从而实现异步操作。 首先,我们需要了解Android ...

    android 线程之间通过Handler发送消息

    然而,由于Android UI操作必须在主线程中执行,因此我们需要一种机制来在不同线程间传递消息,这就是Handler的作用。本文将深入探讨Android中如何通过Handler实现线程间的通信。 首先,理解Android线程模型至关重要...

    Android应用源码之HandlerMessage1_HandlerMessage.zip

    在Android应用开发中,HandlerMessage1_HandlerMessage是一个关键的主题,涉及到Android系统中的消息处理机制,尤其是Handler、Message和Looper的使用。这些组件是Android异步编程的重要组成部分,用于解决UI线程与...

    Android handler message奇怪用法详解

    Looper是消息队列的循环器,它不断检查消息队列并分发消息给相应的Handler处理。Message则是承载数据的对象,用于在Handler间传递信息。 常规的Handler用法包括: 1. **创建Handler**:在主线程中创建Handler实例...

    android service thread toast handler

    在Android开发中,`Service`、`Thread`、`Toast`和`Handler`是四个非常重要的组件和概念,它们在创建高效、响应式的应用程序中起着关键作用。下面将详细阐述这些知识点及其相互关系。 首先,`Service`是Android中的...

Global site tag (gtag.js) - Google Analytics