`
zkl_1987
  • 浏览: 245473 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android 笔记 --- Android中Handler,Looper,HandlerThread

阅读更多
Handler提供了一种消息机制用于线程间的通信。
默认情况下,Handler是运行在和创建它的线程同一个线程里的。Looper的机制可以改变这一点,通过在构造函数出传递一个looper,可以指定handler在和looper相同线程中执行。

1.可以在线程中调用 Looper.prepare(); Looper.myLooper() 得到一个当前线程的 looper。

2.Looper.getMainLooper(); 可以得到主线程的looper

3.handler.post(new Runnable(){..}) runnable里的代码和handler是在同一个线程中执行的,当然handler的 handleMessage() 方法也是在handler的同一线程

HandlerThread 可用于方便的创建一个新线程,然后获得一个looper,以便指定后续的handler在新的线程里执行。 而不用自己再去写一个线程类,然后创建looper等操作。
示例:

// Start up the thread running the service.  Note that we create a
        // separate thread because the service normally runs in the process's
        // main thread, which we don't want to block.  We also make it
        // background priority so CPU-intensive work will not disrupt our UI.
HandlerThread thread = new HandlerThread("ServiceStartArguments",                Process.THREAD_PRIORITY_BACKGROUND);
        thread.start();       
        mServiceLooper = thread.getLooper();
        mServiceHandler = new ServiceHandler(mServiceLooper);


handler常用于新线程中发送一个消息,然后再handleMessage中更新主线程的UI界面(此时handler必须是运行在主线程中的)。

分享到:
评论

相关推荐

    自定义Handler-Looper实现线程间通信

    在Android系统中,主线程默认已经有一个运行的Looper,但如果我们需要在自定义线程中使用Handler进行消息通信,就需要手动创建并启动Looper。这是通过调用Looper.prepare()初始化Looper,然后调用Looper.loop()进入...

    Looper、Handler与HandlerThread

    在Android开发中,Looper、Handler和HandlerThread是三个非常重要的组件,它们构成了Android消息处理机制的基础,用于在主线程中处理来自其他线程的消息。理解并熟练运用这三个组件,对于编写高效、响应迅速的...

    Android的消息处理机制--Looper,Handler

    `Looper`的主要运行循环是`loop`函数,它会持续从`MessageQueue`中拉取消息并执行`Handler`的`dispatchMessage`方法。一旦`Message`的`target`为null,`loop`函数就会退出。`quit`函数用于结束消息循环,通过添加一...

    android学习--handler

    在Android开发中,`Handler`是一个至关重要的组件,它用于处理主线程中的消息调度,实现UI线程与后台线程之间的通信。`Handler`、`Looper`和`Message`是Android异步处理的核心三剑客,它们共同协作,保证了应用的...

    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的使用

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

    Android HandlerThread 全面解析

    `HandlerThread`是Android中的一个内置类,它继承自`Thread`,并添加了`Looper`和`Handler`的支持。通常,当我们需要创建一个新的工作线程来处理耗时任务时,需要手动初始化`Looper`和`Handler`,而`HandlerThread`...

    Android-Event-driver.zip_Looper_android_android Handler_event

    在上一篇文章《Android应用程序消息处理机制(Looper、Handler)分析》中,我们分析了Android应用程序的消息处理机制,本文将结合这种消息处理机制来详细分析Android应用程序是如何获得键盘按键消息的。

    Android Handler Looper Message 使用示例

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

    玩转Android---组件篇---Handler的使用

    Handler是Android系统中用于线程间通信的重要工具,它允许开发者在不同的线程间传递消息并执行相应的处理。在Android应用开发中,由于主线程(UI线程)负责处理用户交互,因此耗时操作如网络请求、文件下载不应在...

    Android项目-谁是歌手

    Android的AsyncTask或者Handler/Looper机制可以帮助开发者实现这一点。 8. **权限管理**:Android 6.0及以上版本引入了运行时权限,开发者需要在运行时获取用户对某些敏感操作的授权,如访问存储或网络。 9. **...

    新版Android开发教程及笔记-完整版

    1. **多线程与异步处理**:理解Handler、Looper、IntentService等机制,以及使用AsyncTask或Coroutine处理后台任务。 2. **性能优化**:学习内存管理、绘制优化、启动速度提升等技术,提升应用性能。 3. **插件化...

    android 多线程 looper handler

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

    android HandlerThread 实例

    `Looper` 是 Android 中用于消息处理的核心类,它维护了一个消息队列(MessageQueue)并负责不断地从队列中取出消息并分发给相应的`Handler`进行处理。因此,`HandlerThread` 可以看作是一个拥有自己消息循环的线程...

    android Looper

    总之,`Looper`是Android系统中的核心组件之一,它与`Handler`和`Message`共同构建了强大的异步处理机制。理解和熟练运用`Looper`,对于开发高效、流畅的Android应用程序至关重要。通过阅读指定的博客文章,你可以更...

    深入浅出Android--Google手持设备应用程序设计(PDF版).rar

    在多线程和性能优化方面,书中会讲解Android中的线程模型,如何使用Handler、Looper和AsyncTask进行异步操作,以及如何避免内存泄漏和提高应用性能。这将帮助开发者写出更流畅、更稳定的程序。 Google Play服务也是...

    Android Handler Looper

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

    Android-Handler-Looper-:处理程序,循环程序,消息队列

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

    Android代码-Api-Error-Handler

    Introduction Declarative error handling.... @AutoHandler // let compiler know it should analyse your class public interface SimplerErrorListener { // your code has to implement this in

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

    总结一下,Android的Handler-Thread-Looper模型是多线程通信的关键,通过Handler发送消息,Thread执行后台任务,Looper负责消息的调度,共同保证了UI线程的流畅性和应用程序的高效运行。开发者应当熟练掌握这些概念...

Global site tag (gtag.js) - Google Analytics