• Handler笔记


    5.Handler内存泄露

      在一个Activity里面,如果没有静态地创建一个Handler,有可能导致内存泄露。

      因为Hander和Looper绑定,如果looper的MessageQueue有消息没处理完,则Looper还引用着Handler,而Handler引用着Activity,导致Activity不能被回收,出现内存泄露。(要等到Looper处理完MessageQueue的消息,Handler才能被回收)

      如果要使用到Activity的成员变量,要声明成WeakReference再传给Handler

    1.一个线程可以有多个Handler

    2.一个线程只有一个Looper,和一个消息队列MessageQueue

    3.如果没有指定,Handler在哪个线程创建,就用哪个线程的Looper

    4.除了主线程,其他的线程都需要先调用Looper.prepare()方法,创建Looper,再用looper.loop()方法遍历消息队列处理消息,如果没有队列里没消息,则会阻塞

  • 相关阅读:
    中国用户mac上快速安装nodejs
    移动前端的开发痛点
    前端模块化思考
    tcpdump学习
    curl 同时发送多个请求
    apache 做http代理
    文件 FIFO队列
    mysql多表字段名重复的情况
    时间戳实现增量数据同步
    python 学习
  • 原文地址:https://www.cnblogs.com/baron89/p/4735684.html
Copyright © 2020-2023  润新知