
android 优化
醉离歌醉yang
业精于勤,荒于嬉;行成于思,毁于随
展开
-
内存管理机制
Random Access Memory(RAM)在任何软件开发环境中都是一个很宝贵的资源。这一点在物理内存通常很有限的移动操作系统上,显得尤为突出。尽管Android的Dalvik虚拟机扮演了常规的垃圾回收的角色,但这并不意味着你可以忽视app的内存分配与释放的时机与地点。于大多数apps来说,Dalvik的GC会自动把离开活动线程的对象进行回收。一、Android系统是如何管理内存的转载 2016-09-07 09:54:03 · 857 阅读 · 0 评论 -
Android开发中,那些让你相见恨晚的方法、类或接口
1、Throwable接口中的getStackTrace()方法(或者Thread类的getStackTrace()方法),根据这个方法可以得到函数的逐层调用地址,其返回值为StackTraceElement[];2、StackTraceElement类,其中四个方法getClassName(),getFileName(),getLineNumber(),getMethodName()在调转载 2017-04-07 17:02:33 · 774 阅读 · 0 评论 -
ArrayMap和HashMap区别
一:HashMapHashMap内部是使用一个默认容量为16的数组来存储数据的,而数组中每一个元素却又是一个链表的头结点,所以,更准确的来说,HashMap内部存储结构是使用哈希表的拉链结构(数组+链表),这种存储数据的方法叫做拉链法 。如图: 且每一个结点都是Entry类型,那么Entry是什么呢?我们来看看HashMap中Entry的属性:转载 2016-09-03 11:32:19 · 18675 阅读 · 3 评论 -
android sparseArray源码解析,比较hashmap
android sparseArray源码解析step1:背景今天偶然看到了sparseArray,发现其主要是针对的类型进行了优化,何为sparse?是稀疏的意思。指的是对稀疏数组情况的讨论所谓稀疏数组: * 就是数组中大部分的内容值都未被使用(或都为零),在数组中仅有少部分的空间使用。因此造成内存空间的浪费,为了节省内存空间,并且不影响数组中原有的内容值,我们可以采转载 2017-05-24 14:33:15 · 483 阅读 · 0 评论 -
页面动态化的基础 —— Tangram
苹果核 - 页面动态化的基础 —— TangramDec 20, 2016 • Longerian12月10日在SFDC(SegmentFault Developer Conference)大会上初次介绍了手机天猫的Tangram方案,现场时间有限,讲得匆忙,特此整理记录。这篇内容是Tangram的整体介绍与相关业务开发实践的介绍,后续逐步会将更详细的方案整理成文分享出来。转载 2017-05-06 18:13:36 · 2877 阅读 · 0 评论 -
Tangram 的基础 —— vlayout(Android)
苹果核 - Tangram 的基础 —— vlayout(Android)Feb 28, 2017 • Longerian前言vlayout 是手机天猫 Android 版内广泛使用的一个基础 UI 框架项目 提供了一个用于RecyclerView的自定义的LayoutManger,可以实现不同布局格式的混排,目标是支撑客户端native页面的快速开发。它也是 Tangra转载 2017-05-06 18:15:59 · 568 阅读 · 0 评论 -
vlayout使用说明(一)
苹果核 - vlayout使用说明(一)Mar 3, 2017 • Longerian前言vlayout 的设计思路请参考Tangram 的基础 —— vlayout(Android)。框架已经开源,欢迎移步到 github 上指教。本文介绍 vlayout 的基本使用。默认实现默认通用布局实现,解耦所有的View和布局之间的关系: Linear, Gr转载 2017-05-06 18:19:34 · 930 阅读 · 0 评论 -
vlayout使用说明(二)
苹果核 - vlayout使用说明(二)Mar 3, 2017 • Longerian前言vlayout 的设计思路请参考Tangram 的基础 —— vlayout(Android)。框架已经开源,欢迎移步到 github 上指教。本文介绍 vlayout 的基本布局样式上的属性说明。margin, paddingMargin, padding就是外边转载 2017-05-06 18:22:55 · 841 阅读 · 0 评论 -
苹果核 - Pairing Function —— vlayout 中使用数学的小场景
Longerian: 『关于vlayout,有人在 Github 上咨询DelegateAdapter 的构造方法里关于 hasConsistItemType 参数的含义。我稍微做了解释,但为了更好的介绍这一块知识点,我想起了之前团队里的同学(@Villadora)在设计这一块时的一个巧妙的处理,特此将其中的奥秘分享出来。本文原作者是Villadora,我转载并做了少许修改。』遇到的问转载 2017-05-16 17:42:37 · 604 阅读 · 0 评论 -
ArraylList的扩容机制和使用ensureCapacity()方法提高性能
ArrayList的扩容规则是变成原来最大容量的1.5倍+1具体为什么,现在看一下源码:[java] view plain copypublic boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!!转载 2017-05-22 18:32:59 · 4708 阅读 · 4 评论 -
Support Annotations注解介绍以及自定义注解代替枚举
尊重他人的劳动成果,转载请标明出处:http://blog.youkuaiyun.com/gengqiquan/article/details/70185731, 本文出自:【gengqiquan的博客】上篇博客嘀咕了注解的基本知识。这篇和大家唠唠Android提供的一些编译限制注解以及怎么自定义贴合自己项目框架的限制注解Android支持Java默认的那些注解,同时通过一些依赖库也额外提供了转载 2017-06-08 14:59:59 · 404 阅读 · 0 评论 -
android锯齿问题,解决方案
Android中经常遇到锯齿的问题,总结以下几点,对于不同的问题,可以选择对应的方案。1.按钮:使用sdk工具 draw9patch2.画笔:对画笔设置抗锯齿选项paint.setAntiAlias(true)3.位图:绘制bitmap,用到drawbitmap()是,需要加上paint.setFilterBitmap(true)4.View:对画布设置过滤器canvas.转载 2017-10-31 10:26:45 · 3922 阅读 · 0 评论 -
viewholde另一种写法
每为一个AdapterView写Adapter适配器,你是否都会创建 一个static的ViewHolder类来负责临时存储ItemView?不用回答我也已经听见了你的抱怨,那么下面为大家介绍另外一种我经常使用的写法,从此和无尽的ViewHolder说拜拜,而且不会影响页面加载的性能。Android为开发者提供了ListView和GridView这两个常用于显示列表的控件。在不使用转载 2016-12-20 18:19:38 · 603 阅读 · 0 评论 -
android性能优化
简介 (0:00)大家好,我是 Boris,现在是 Google 的一枚员工,目前专注于需要高性能的 App。这个分享是我长期以来从错误中,以及在给合作伙伴做咨询的时候攒下的最佳实践。如果你有一个小型的 App,读过之后,会在你的 App 成长阶段起到帮助。我常常会见到那些启动时间很长,滑动不流畅,甚至出现没有反应的 App。我们通常要花很多时间去改善这些问题,毕竟我们都希望自己的转载 2016-12-20 11:05:42 · 286 阅读 · 0 评论 -
actvity内存泄漏
转载自:http://blog.youkuaiyun.com/u010687392/article/details/49909477前言对于内存泄漏,我想大家在开发中肯定都遇到过,只不过内存泄漏对我们来说并不是可见的,因为它是在堆中活动,而要想检测程序中是否有内存泄漏的产生,通常我们可以借助LeakCanary、MAT等工具来检测应用程序是否存在内存泄漏,MAT是一款强大的内存分析工具,功能繁转载 2016-12-20 10:58:54 · 389 阅读 · 0 评论 -
应用内存优化之OnLowMemory&OnTrimMemory
onLowMemory& onTrimMemory简介:OnLowMemory是Android提供的API,在系统内存不足,所有后台程序(优先级为background的进程,不是指后台运行的进程)都被杀死时,系统会调用OnLowMemory。OnTrimMemory是Android 4.0之后提供的API,系统会根据不同的内存状态来回调。根据不同的内存状态,来响应不同的内存释放策略。转载 2016-09-07 09:56:04 · 385 阅读 · 0 评论 -
xutils,了解注解和实现方式
在上一篇文章Android 最火的快速开发框架XUtils中简单介绍了xUtils的基本使用方法,这篇文章说一下xUtils里面的注解原理。 先来看一下xUtils里面demo的代码:[java] view plaincopy@ViewInject(R.id.tabhost) private Fra转载 2016-10-10 16:04:21 · 367 阅读 · 0 评论 -
分析Dalvik字节码进行减包优化
优化思路通过dexdump反编译apk中的dex,得到对应Dalvik字节码,找到寻找冗余的字节码,尝试去除或替换冗余的字节码目前主要是替换或去除原有的java代码,减少对应的Dalvik指令,从而减少安装包大小。现在主要是从Dalvik字节码分析来调整Java代码,之后希望能够通过ASM等框架直接调整字节码减少现在的包大小。优化效果去除初始化赋值方案 ——转载 2016-11-03 16:27:57 · 438 阅读 · 0 评论 -
内存泄漏问题
测试跟你说你的XXActivity泄露了,你如何确认是否真的泄漏?确认泄漏后,你又如何定位是哪里的问题导致内存泄漏?Android日常开发中,内存泄漏的重灾区就是Activity,相信这两个是每个Android开发者都碰到过的问题,遇到这种问题,我们一般都会祭出我们的杀手锏:Dump Java Heap然后MAT静态分析GC链。然后今天我想另辟蹊径,从更简单的角度定位并解决这种转载 2016-11-03 16:33:26 · 225 阅读 · 0 评论 -
APK瘦身套路-图片资源
APK作为Android系统安装包的文件格式,一直备受广大用户的关注,APK越是臃肿肥大,在下载安装过程中,它们耗费的流量会越多,安装等待时间也会越长;对于产品本身,意味着下载转化率会越低(因为竞品中,用户有更多机会选择那个体验最好,功能最多,性能最好,包最小的);对于研发来说,是一种优化改进技术的机会。今天老司机将带领大家一起探讨下APK脂肪含量最高的图片资源瘦身套路。 套路一:查找转载 2016-11-02 16:53:41 · 452 阅读 · 0 评论 -
rxjava的map流程
假设:Observabel.create(new OnSubscribe(Subscribe sub)).map>.map>.subscribe(Sub) 流程图如下:总结,在subscribe时,转换:sub -------------> sub(sub,fuc) ----------> sub(sub,fu原创 2016-12-26 11:59:30 · 394 阅读 · 0 评论 -
rxjava的observeOn和subscribeOn
为什么多次调用subscribeOn()却只有第一个起作用? 为什么多次调用observeOn()却可以切换到不同线程 observeOn()后能不能再次调用subscribeOn()?如果你有这些疑问,那接下来的内容必定能解决你心头的疑惑subscribeOn()和observeOn()的区别subscribeOn()和observeOn()都是用来切换线程用的转载 2016-12-26 14:00:43 · 967 阅读 · 0 评论 -
rxjava的ObserveOn和SubscribeOn的一些结论
ObserveOn:1.OnSub.call的调用过程自上而下的2.多个ObserveOn有作用3.只影响ObserveOn下面的代码4.线程作用在Subscriber上5.只写ObserveOn不写SubscribeOn,不会影响到OnSub.call(Sub)SubscribeOn1.Observe.subscribe(Sub)的调用自下而上2.多个Su原创 2016-12-26 15:29:29 · 605 阅读 · 0 评论 -
电量分析工具 Battery Historian 的配置及使用
说干就干! 简书:http://www.jianshu.com/p/c25480ae374b 所有操作均在 Windows 7 64位 操作系统上进行 !一、概念 Battery Historian:https://github.com/google/battery-historian Battery Historian 是一个这样的的工具:可以在 Android 5.0 Loll...转载 2018-06-01 10:32:40 · 1546 阅读 · 0 评论