`
Beyon_javaeye
  • 浏览: 68649 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Android Handler

阅读更多
接触android的应用开发已经有一个多月了,对于控件的使用,比较容易掌握,通过xml配置布局,在主程序中建立对应的控件,设置监听,完成用户动作,我说的也只是入门级的水平,本人也是入门级菜鸟,哈哈!对我而言,初学的难度在于handler的使用上,所以在这里详细介绍一下!

         Handler从字面上看就是一个句柄,用于负责发送和处理相应消息,它包括两种队列:线程队列和消息队列,分别通过post和sendmessage来实现。

        使用Handler的流程:

1、创建Handler对象,可以直接使使用Handler无参构造函数,创建对象,也可以继承handler类,重写HandlerMessage函数,然后创建Handler对象。

Handler handler = new Handler(){
    public void handleMessage(Message msg) {

      //执行方法
        }
};

2、建立Runable对象,复写run方法,run方法中是将要执行的操作。

    Runnable mThread = new Runnable() {
        int i = 0;
        @Override
        public void run() {
            // TODO Auto-generated method stub

            //执行方法
        }
    };

3、在监听入口中,调用Handler的post或者postDelayed方法,将要执行的线程对象(Runable对象)加入到线程队列中。也可以用sendMessage发送消息,处理消息的地方就是复写的HandlerMessage里。可以通过obtainMessage,获取消息,传递参数。

handler.post(mThread);

或者

Message msg = handler.obtainMessage();
msg.arg1 = i;

handler.sendMessage(msg);

想要线程停止,可以调用Handler对象的removecallbacks(Runable r)从线程队列中移除线程对象。

注意:线程对象和消息对象分别对应线程队列和消息队列,处理也是分成了post和SendMessage两种,要加以区分。

            Handler分发Message对象和Runable对象到主线程,每个handler实例都会绑定到创建他的线程中。

ps:我也看书和自己练习总结的,可能有说的不清楚的地方!

分享到:
评论

相关推荐

    Android Handler工作原理解析

    主要为大家详细介绍了Android Handler的原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Android Handler解析

    # Android Handler解析 在Android应用开发中,保持应用程序的响应性是至关重要的。为了实现这一目标,我们需要确保UI线程不会被阻塞。通常来说,将耗时的任务(如网络请求、复杂计算等)放到后台线程执行可以提高UI...

    Android Handler机制解析

    Android Handler机制解析 Android Handler机制是Android系统中的一种机制,用于处理线程之间的通信和消息传递。在Android系统中,Handler机制是基于Java的线程机制来实现的。下面将对Android Handler机制进行详细的...

    android handler例子

    在Android开发中,`Handler`是一个至关重要的组件,它用于处理与线程通信相关的任务,尤其是在主线程(UI线程)和工作线程之间。`Handler`、`Looper`和`Message`三者共同构成了Android的消息传递机制。下面将详细...

    Android Handler的详细介绍

    Android Handler是Android应用程序中用于处理线程间通信和更新UI的主要机制。当应用程序启动时,Android系统会默认创建一个主线程,也称为UI线程,它的主要任务是管理用户界面,包括事件分发和UI控件的操作。在这个...

    android handler

    ### Android Handler机制详解 #### 一、Handler简介与作用 在Android开发中,**Handler**是一种非常重要的消息处理机制,主要用于解决线程间通信的问题。它使得开发者可以在一个线程中发送消息或运行任务,并在另...

    androidHandler测试的demo

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

    Android Handler Looper

    在Android应用开发中,Handler、Looper和Message是实现线程间通信的重要机制,尤其是在主线程与工作线程之间同步数据和执行UI更新时。Handler、Looper和Message三者结合使用,构建了一个消息处理系统,使得非UI线程...

    学习Android Handler消息传递机制

    在Android应用开发中,Handler是实现线程间通信的关键组件,尤其在涉及到UI更新时。本文将深入探讨Android Handler消息传递机制,以及如何利用它在不同线程间传递信息,以便在新启动的线程中修改UI组件。 首先,...

    Android Handler内存泄漏详解及其解决方案

    Android Handler内存泄漏详解及其解决方案 在 Android 开发过程中,我们可能会遇到过令人奔溃的 OOM 异常,这篇文章主要介绍了 Android Handler 内存泄漏详解及其解决方案,具有一定的参考价值,感兴趣的小伙伴们...

    Android Handler 原理分析及实例代码

    Android Handler 原理分析 Handler一个让无数android开发者头疼的东西,希望我今天这边文章能为您彻底根治这个问题 今天就为大家详细剖析下Handler的原理 Handler使用的原因 1.多线程更新Ui会导致UI界面错乱 2.如果...

    模拟Android Handler机制Demo

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

    Android Handler机制的工作原理详析

    Android Handler机制是Android系统中用于实现线程间通信的核心组件,尤其在UI线程与后台线程交互时起到至关重要的作用。Handler、Message、Looper、MessageQueue和ThreadLocal是其主要涉及的五个关键类。 首先,...

    Android HandlerDemo

    为什么要使用Handler呢?主要有两个原因: 一是线程安全问题,假如同时有两个线程对一个UI控件进行调整,那么控件自然就没法正常的工作。而Handler永远都是在UI主线程,这就意味着对一个控件的修改永远只会有一个...

    Android Handler消息派发机制源码分析

    在Android开发中,Handler是一种关键的组件,用于在主线程中处理来自其他线程的消息,实现线程间的通信。本文将深入解析Android Handler的消息派发机制源码,帮助开发者理解其内部工作原理。 首先,我们从`...

    android handler.post和handler.sendMessage的区别和联系

    在Android开发中,`Handler` 是一个至关重要的组件,它用于在不同的线程间通信,尤其是在主线程(UI线程)与工作线程之间。`Handler.post()` 和 `Handler.sendMessage()` 都是用来发送消息到消息队列的,它们在本质...

    Android Handler传值的demo

    在Android开发中,`Handler`、`Message`和`Looper`是实现线程间通信的重要机制,特别是当需要在主线程(UI线程)和工作线程之间传递数据时。本示例“Android Handler传值的demo”将帮助我们深入理解这一机制。 `...

    android Handler详细使用方法实例

    Android中的Handler机制是Android应用开发中的核心组件之一,它与多线程、消息队列紧密相连,用于实现线程间的通信和任务的调度。Handler允许您将任务发送到特定的线程的队列中执行。一个典型的使用场景是在非UI线程...

Global site tag (gtag.js) - Google Analytics