安卓性能优化之清除Handler的Message和Runnable

Handler是由系统所提供的一种异步消息处理的常用方式,一般情况下不会发生内存泄露.

但既然是调优,当在A_Activity中使用handler发送了几个消息,然后又跳到B_Activity,这个时候如果我们想结束之前在A_Activity中发出的消息,不再占用多余的队列空间.怎么办呢?

原来,Handler中已经提供了一个removeCallbacksAndMessages去清除Message和Runnable:

  1. handler.removeCallbacksAndMessages(null);

将方法参数设为null.

在Activity的销毁方法onDestroy()中调用该方法即可.

题外话:

熟悉Activity的生命周期是能让应用在性能调优时达到更好的实现方式. 比如onDestroy() 方法,onPause()方法等等, Activity销毁前生命周期会进入onDestroy(),当前Activity所用过且不再需要的占用内存的资源可以在这里进行一些处理, 比如将不再使用的视图资源清除掉,将正在访问而不再需要的网络连接给终止掉,将消息队列中不再需要的消息清除等等.这样当不断打开新的页面Activity,也能将应用多余的内存缓存尽量减少一些达到调优的目的.

https://blog.csdn.net/stzy00/article/details/43988213

定时器 ,也可以才去这种方式处理。没有消息,就不会继续后边的操作。

安卓性能优化之清除Handler的Message和Runnable的更多相关文章

  1. SQL性能优化前期准备-清除缓存、开启IO统计

    文章来至:https://www.cnblogs.com/Ren_Lei/p/5669662.html 如果需要进行SQl Server下的SQL性能优化,需要准备以下内容: 一.SQL查询分析器设置 ...

  2. spark性能优化----缓存清除

    spark是一款优秀的框架,计算性能相当优异,已经发展成大数据主流计算引擎,在spark开发过程中有很多优化的点.其中去除重复计算是非常重要的.一般操作调用cache/persist,来缓存中间结果, ...

  3. 安卓性能优化之计算apk启动时间

    之前有人在知乎提问:"怎么计算apk的启动时间?" : 利用Python或者直接用adb命令怎么计算apk的启动时间呢?就是计算从点击图标到apk完全启动所花费的时间.比如,对游戏 ...

  4. [Android]Android性能优化

    安卓性能优化 性能优化的几大考虑 Mobile Context 资源受限 + 内存,普遍较小,512MB很常见,开发者的机器一般比用户的机器高端 + CPU,核心少,运算能力没有全开 + GPU,上传 ...

  5. Spark调优,性能优化

    Spark调优,性能优化 1.使用reduceByKey/aggregateByKey替代groupByKey 2.使用mapPartitions替代普通map 3.使用foreachPartitio ...

  6. 推荐 greenrobot eventbus,简化安卓开发,提高安卓维护性,优化安卓性能

    最近在研究移动开发,广泛的阅读有关cordova,apicloud,android资料.发现安卓的开发还是很简单的.再发现greenrobot eventbus开源框架不仅可以简化安卓开发,有可以大幅 ...

  7. 安卓ListView的性能优化

    在安卓APP中LIstView这个控件可以说基本上是个APP就会用到,但是关于ListView除了需要了解其最基本的用法外,作为一个要做出高性能APP的程序员还需了解一些关于LIstView控件性能优 ...

  8. Android应用性能优化(转)

    人类大脑与眼睛对一个画面的连贯性感知其实是有一个界限的,譬如我们看电影会觉得画面很自然连贯(帧率为24fps),用手机当然也需要感知屏幕操作的连贯性(尤其是动画过度),所以Android索性就把达到这 ...

  9. android 性能优化

    本章介绍android高级开发中,对于性能方面的处理.主要包括电量,视图,内存三个性能方面的知识点. 1.视图性能 (1)Overdraw简介 Overdraw就是过度绘制,是指在一帧的时间内(16. ...

随机推荐

  1. Java LinkedHashMap 逆序遍历

    利用 ListIterator<pre name="code" class="java">previous import java.util.Arr ...

  2. linux命令-寻找超过100M的文件,并将其删除

    find / -type f -size +100M | xargs rm -rf 其中第一个/表示路径,此时表示的是根目录,也就是搜索全部的文件 -type表示类型 f表示是文件 -size 表示大 ...

  3. Java二进制兼容性原理

    一.概述 现在的软件越来越依赖于不同厂商.作者开发的共享组件,组件管理也变得越来越重要.在这方面,一个极其重要的问题是类的不同版本的二进制兼容性,即一个类改变时,新版的类是否可以直接替换原来的类,却不 ...

  4. C 标准库 - ctype.h之isalpha使用

    isalpha int isalpha ( int c ); Checks whether c is an alphabetic letter. 检查给定字符是否字母字符,即是大写字母( ABCDEF ...

  5. 2-5 js基础-简易运动框架

    'use strict'; function getStyle(obj,sName){ return (obj.currentStyle||getComputedStyle(obj,false))[s ...

  6. mvn pom

    使用本地指定目录下jar包 <dependency> <groupId>com.myself.abc</groupId> <artifactId>sam ...

  7. mysql在查询结果列表前添加一列递增的序号列(最简)

    SELECT @rownum:=@rownum+1 AS 序号, t_user.* FROM  t_user ,(SELECT @rownum:=0) r  -- 最简写法1 更多写法供参考: ①   ...

  8. PL/SQL之存储过程和函数

    1.创建存储过程 .1语法: CREATE[OR REPLACE] PROCEDURE [schema.] procedure_name[(argument[{IN|OUT|IN OUT}] data ...

  9. 打印插件--PAZU

    PAZU对打印控制实现了: 2.1 设置页眉页脚 2.2 指定纸张大小 2.3 设置纸张方向 2.4 设置页边距 2.5 选择指定的打印机 2.6 无需用户确认,JS直接调用打印预览 2.7 无需用户 ...

  10. Linq学习以及简单用法

    Linq学习 Linq(language Intergrated Query)即语言集成查询 LINQ是一组语言特性和API,使得你可以使用统一的方式编写各种查询.用于保存和检索来自不同数据源的数据, ...