在Android开发中会使用Handle的removeCallbacks函数,该函数功能为:

但实际工作中有时会出现removeCallbacks无效,解决它。

图:两个按钮,一个将Runnable加到消息队列中,一个将Runnable从消息队列中移除。该Runnable每3秒钟打印一次日志。

码:

结果:

(1)start –>  输出 –> end –> 停止输出

(2)start –> 输出 –>  BackGround –> Front –> 继续输出

当Activity进入后台运行后再转入前台运行,removeCallbacks无法将updateThread从message queue中移除。

这是为什么呢?

在Activity由前台转后台过程中,线程是一直在运行的,但是当Activity转入前台时会重新定义Runnable updateThread;也就是说此时从message queue移除的updateThread与原先加入message queue中的updateThread并非是同一个对象。如果把updateThread定义为静态的则removeCallbacks不会失效,如图:

此时,post,postDelayed,removeCallback面对的是同一个handler,updateThread,因此能够实现remove。

这个原因即使是正确的也是表面原因,具体原因需要深入底层机制去了解,求解中。。。

转载于:https://www.cnblogs.com/wyinan/archive/2011/11/07/2239066.html

Android中removeCallbacks失效原因相关推荐

  1. Android OOM出现常见原因及解决办法

    手机在运行应用的时候,一直在崩溃,而这个异常就是OutOfMemory的错误,简称为OOM, 搞得我们也是极其的崩溃,最后 ,我们是通过网上搜集资料和代码走查的方式来优化解决的,这里,我就把我们收集到 ...

  2. MySQL索引失效原因,SQL查询语句不走索引原因

    前言 日常工作中索引失效原因很多,这个需要平时的日积月累,不断学习,才能更正确的发挥索引的作用,下面简单总结一些索引失效原因. 1. 隐式的类型转换,索引失效 select * from test w ...

  3. Android 中内存泄漏的原因和解决方案

    之前研究过一段时间关于 Android 内存泄漏的知识,大致了解了导致内存泄漏的一些原因,但是没有深入去探究,很多细节也理解的不够透彻,基本上处于一种似懂非懂的状态,最近又研究了一波,发现有很多新的收 ...

  4. unity3d shader编程中GrabPass 在某些android手机上失效的解决方案

    unity3d shader编程中GrabPass 在某些android手机上失效的解决方案 参考文章: (1)unity3d shader编程中GrabPass 在某些android手机上失效的解决 ...

  5. SpringBoot 中@Autowired 注入失效原因及解决方法

    SpringBoot 中@Autowired 注入失效原因及解决方法 1.原因分析 1.1 包没有被扫描到通过@Autowired注入的类所在的包路径不在Application启动类所在的包/子包路径 ...

  6. Android中app卡顿原因分析示例

    http://www.cnblogs.com/zhucai/p/weibo-graphics-performance-analyse.html 朱才 专注于Android图形动画 MIUI工程师 博客 ...

  7. Android 中的卡顿丢帧原因概述 - 低内存篇

    在Android 中的卡顿丢帧原因概述 - 系统篇 这篇文章中 , 实际案例这里我们有列举一些由于系统低内存导致的卡顿 , 由于 Android 低内存对整机性能影响比较大 , 所以单独写一篇文章 , ...

  8. Android代码中setvisibility失效了?

    一.问题现象 最近在开发过程中遇到了在代码中setvisibility失效的问题,在网上查了好多资料都没有解决我的问题 二.发生背景 项目是MVVM架构,使用了databinding,想在tablay ...

  9. OpenCv中,waitkey()函数失效原因

    OepnCv库中,waitkey函数失效原因 情景描述 原因 HighGUI 函数 情景描述 在写一个自动化脚本,然后再某一个循环里,使用了如下代码: while True:# ord 函数, 根据键 ...

最新文章

  1. ATLAS入门篇之HoverMenuExtender控件编程(2)
  2. AVA 8 :从永久区(PermGen)到元空间(Metaspace)
  3. selenium2与python自动化6-select下拉框
  4. 使用POI进行数据导出excel时的OOM服务挂掉,cpu飙升的问题
  5. linux考试基础知识测验
  6. 做大公司的螺丝钉 vs 当小公司的多面手
  7. 代码的坏味道:控制结构嵌套太深
  8. 十八般武艺玩转GaussDB(DWS)性能调优:路径干预
  9. .Net 2.0对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等) 2
  10. Python自动化办公之Word,超全总结【建议收藏】
  11. ios签名php在线监控,IOS无需签名无需越狱H5网页在线封装APP教程
  12. AI 人工智能学习之泰勒公式与拉格朗日乘数法
  13. AutoCAD2014的安装
  14. html5谷歌地图,谷歌地图API和HTML 5
  15. 陈婉芬老师的精髓金玉良言----相信篇,观念篇
  16. Cadence Allegro 如何添加Artwork光绘底片文件?
  17. ps怎么给图片加透明边框
  18. Android studio诗词app古诗词中国风记事本ui设计中国古诗词
  19. 2022卡塔尔世界杯 | 致我们每个人那份绿茵场上的足球梦
  20. 条纹噪声图片_一种红外图像条纹噪声滤波方法与流程

热门文章

  1. 微博达人硅谷之歌:Testin云測移动搜索性能測试非常是让人信服
  2. JS Math的几个方法使用实例
  3. Java Timer定时器 使用
  4. MyEclipse的文本编辑器
  5. spring boot 加载过程分析(三)
  6. 利刃 MVVMLight 8:DispatchHelper在多线程和调度中的使用
  7. 关于XML在与FLASH交互应用中的理解
  8. 论政府开放数据的意义
  9. 印度太阳能企业争取对中、台、马实施反倾销税
  10. 美博士环保聚焦“限漆令”出台之后的涂料行业