
Android性能优化
文章平均质量分 78
DroidMind
这个作者很懒,什么都没留下…
展开
-
【内存优化】避免使用Enum
图片来自:为什么Android中不建议使用Enums在Android官网上已经明确指出应该在Android避免使用Enum,因为与静态常量相比,它对内存的占用要大很多。下面有它们的一个比较:假设我们有这样一份代码,编译之后的dex大小是2556 bytes,在此基础之上,添加一些如下代码,这些代码使用普通static常量相关作为判断值: 增加上面那段代码之后,编译成dex的大小是2680 byte原创 2015-10-08 17:48:01 · 6051 阅读 · 0 评论 -
Android中使用注解替代枚举
枚举最大的作用是提供了类型安全。为了弥补Android平台不建议使用枚举的缺陷,官方推出了两个注解,IntDef和StringDef,用来提供编译期的类型检查。首先,引入依赖包:compile 'com.android.support:support-annotations:22.0.0'public class MyConstants { public static ...原创 2016-08-07 18:21:58 · 6986 阅读 · 3 评论 -
Android布局分析的两种方式
1、Dump UI Hierarchy for UI Atomator,分析UI层级从Android Studio中启动Android Device Monitor: Tools -> Android -> Android Device Monitor. 使用方法很简单,如下图 2、HierachyViewer 出于安全考虑,Hierarchy Viewer只能连接Andr...原创 2016-09-27 19:39:54 · 9038 阅读 · 0 评论 -
Android应用性能检测工具-TraceView
TraceView主要的功能就是检测你的应用在运行过程中各个线程的CPU占用情况,依据此可以找出你的应用出现卡顿的地方。基本使用使用TraceView主要有两种方式: 1、从Android Studio中启动Android Device Monitor: Tools -> Android -> Android Device Monitor. (1).选择你要调试的进程。 ...原创 2016-09-27 19:07:21 · 864 阅读 · 0 评论 -
Android内存优化
一、内存泄漏1、集合类泄漏2、单例造成的内存泄漏3、匿名内部类/非静态内部类4、异步线程5、Handler 造成的内存泄漏6、资源对象没关闭造成的内存泄露7、注册某个对象后未反注册尽量避免使用 static 成员变量 避免 override finalize() 资源未关闭造成的内存泄漏二、避免创建不必要的对象1、避免Activity的重复创建 (1)...原创 2016-08-09 10:23:37 · 478 阅读 · 0 评论 -
【UI布局优化】Android布局优化的几种方式
在Android中,布局优化越来越受到重视,下面将介绍布局优化的几种方式,这几种方式一般可能都见过,因为现在用的还比较多,我们主要从两个方面来进行介绍,一方面是用法,另一方面是从源码来分析,为什么它能起到优化的效果。一、几种方式的用法 1、布局重用<include />这个标签的主要作用就是它能够重用布局文件,如果一些布局在许多布局文件中都需要被使用,我们就可以把它单独写在一个布局中,然后使用这个原创 2015-10-12 14:18:35 · 2284 阅读 · 0 评论 -
【UI布局优化】Hierarchy Viewer-优化你的UI
优化UI的方法有两种,具体来说应该是UI审查的方法: 1、使用Hierarchy Viewer 2、使用lintlint是一个静态的代码审查工具。Hierarchy Viewer可以让你去调试和优化你的用户界面,它提供了一个可视的布局层级视图来查看界面的布局情况。作用: 1、布局结构和性能 2、UI显示和调试下面就开始来使用一下这个工具了 1、启动模拟器 2、安装你要查的应用,然后启动这原创 2016-01-05 12:21:35 · 1682 阅读 · 0 评论 -
【内存泄露】由Handler引发的内存泄漏的思考
前面Looper与Handler解析提到过下面这段代码会出现内存泄漏,其实在Android Studio中会提示这个问题: 在编辑器里面会自动将这段代码标出来,我们看看提示信息是什么?This Handler class should be static or leaks might occur (null) less... (Ctrl+F1) Since this Handler is d原创 2015-07-26 20:02:57 · 4175 阅读 · 6 评论 -
【内存优化】ArrayMap源码解析
一、为什么要使用ArrayMap ArrayMap是一个普通的键值映射的数据结构,这种数据结构比传统的HashMap有着更好的内存管理效率。传统HashMap非常的好用,但是它对内存的占用非常的大。为了解决HashMap更占内存的弊端,Android提供了内存效率更高的ArrayMap。二、ArrayMap的实现原理 它内部使用两个数组进行工作,其中一个数组记录key hash过后的顺序列表,另原创 2015-09-21 21:47:26 · 2540 阅读 · 0 评论 -
【内存优化】SparseArray源码分析
SparseArray是一个Interger和Object的键值对,相当于HashMap<Integer,Object>它具有以下特点: 1、它不同于Array<Object>的是它的键值可以为不连续的数字,这点应该很好理解,数组的索引值是连续固定的,它可以任意且不连续,但是它不重复且是有序的。 2、它相比于HashMap<Integer,Object>具有更好的内存效率,因为它不仅避免了键值的原创 2015-09-28 17:20:32 · 679 阅读 · 0 评论 -
Hugo探究
Hugo介绍 我们写代码时,常会打日志输出某个函数执行耗时,传入的参数以及返回值。那么我们能否把这件事情做的更加优雅呢?Hugo就是为此而设计的。 你只需要在需要监控的函数上加上@DebugLog注解,函数运行时就会自动输出上面提到的信息。 例如:@DebugLogpublic String getName(String first, String last) { Syst...转载 2016-09-29 14:46:18 · 2541 阅读 · 0 评论