Android 性能优化
程序邦
1. 擅长Android 开发
2. 擅长React Native 跨平台开发
展开
-
Android 内存优化-应用退到后台清除缓存
背景:App在使用过程中,图片加载越来越多。即便现在的Glide提供了不错的内存回收能力,但是依然存在了App使用内存越来越大的问题。方案:检测App切换到后台后,目前先只清除图片相关内存。实践:查看当前App使用内存大小adb shell dumpsys meminfo com.cn.xxxadb shell dumpsys meminfo 1636版本:4.4.0采样案例:动态图文 10张图片 首次打开界面 打开 图文原创 2021-09-30 14:20:29 · 635 阅读 · 0 评论 -
APP弱网络条件下,体验优化之道
APP弱网络条件下,体验优化之道最近跟朋友聊天刚好聊到这一块,他们是在做电商业务,商品图片及其多,API接口请求频率也高。然而,他们在移动2/3G的网络环境下,APP经常会出现Loading很久的情况,这里我把我们所分析与使用到的网络优化方案与大家分享一下。所谓的弱网络,也就是指在网络不好的条件下进行使用APP,如2G、3G网络,这类网络条件下,用户的网络速度基本维原创 2017-11-13 14:14:20 · 1281 阅读 · 0 评论 -
手机淘宝性能优化
转载自:https://yq.aliyun.com/articles/53?spm=5176.8067842.tagmain.39.hiIWFT该文章来自于阿里巴巴技术协会(ATA)精选文章。手机淘宝性能优化前言为了满足不同用户的多样性购物需求,过去两年里手淘的业务不断膨胀,已经从单一的购物工具成为了购物内容平台。在手淘业务快速增长的同时,也带来一些副作用,转载 2018-01-09 14:41:19 · 959 阅读 · 0 评论 -
地理空间距离计算优化
#1 地理空间距离计算面临的挑战打开美团app,不管是筛选团购还是筛选商家,默认的排序项都是“离我最近”或者“智能排序”(如下图所示)。不管是“离我最近”还是“智能排序”,都涉及到计算用户位置与各个团购单子或者商家的距离(注:在智能排序中距离作为一个重要的参数参与排序打分)。以筛选商家为例,北京地区有5~6w个POI(本文将商家称之为POI),当用户进入商家页,请求北京全城+所转载 2017-12-27 10:48:41 · 1403 阅读 · 0 评论 -
WebView性能、体验分析与优化
转载自:https://tech.meituan.com/WebViewPerf.html在App开发中,内嵌WebView始终占有着一席之地。它能以较低的成本实现Android、iOS和Web的复用,也可以冠冕堂皇的突破苹果对热更新的封锁。然而便利性的同时,WebView的性能体验却备受质疑,导致很多客户端中需要动态更新等页面时不得不采用其他方案。以发展的眼光来看,功转载 2017-12-27 09:29:00 · 1321 阅读 · 0 评论 -
携程App的网络性能优化实践
转载自:http://www.infoq.com/cn/articles/how-ctrip-improves-app-networking-performance首先介绍一下携程App的网络服务架构。由于携程业务众多,开发资源导致无法全部使用Native来实现业务逻辑,因此有相当一部分频道基于Hybrid实现。网络通讯属于基础&业务框架层中基础设施的一部分,为App提供统一的网络服务转载 2017-11-22 15:34:30 · 387 阅读 · 0 评论 -
Android 性能优化之Loading Big Bitmaps
高效加载Large Bitmaps加载大Bitmaps到内存中,总是会有各种各样的问题,我们在开发过程中,经常会遇到因为图片资源过大导致OOM。我们应该始终留意在Android中每一个应用占用的内存大小是有上限的,过了这个上限,系统就回报OOM,用户体验非常差。今天我们就聊一聊如何加载Large Bitmaps,了解以下它具体是如何工作的。这篇文章只是用来聊一聊加载Bi原创 2017-08-31 17:19:10 · 319 阅读 · 0 评论 -
Android 性能优化:使用 Lint 优化代码、去除多余资源
读完本文你将了解到:前言什么是 LintLint 工作方式简单介绍从命令行运行 LintAndroid Studio 中使用 Lint团队中建立代码规范利器提升降低问题的等级Lint 虽好也不能贪杯在 Java 代码中忽略 Lint 警告在 XML代码中忽略 Lint 警告Gradle 中配置 Lint自动删除查找出来的无用资源文件总结Thanks原创 2017-09-14 18:44:21 · 378 阅读 · 0 评论 -
如何优化你的布局层级结构之RelativeLayout和LinearLayout及FrameLayout性能分析
转载自:http://blog.csdn.net/hejjunlin/article/details/51159419转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/51159419如何优化你的布局层级结构之RelativeLayout和LinearLayout及FrameLayout性能分析工作一段转载 2017-09-06 16:48:07 · 430 阅读 · 0 评论 -
Android开发优化之——使用软引用和弱引用
Java从JDK1.2版本开始,就把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。这里重点介绍一下软引用和弱引用。如果一个对象只具有软引用,那么如果内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的原创 2017-09-13 14:52:56 · 223 阅读 · 0 评论 -
Android性能调优 ViewPager+Fragment+RecyclerView
1.使用FragmentStateAdapter 来保证内存最多保存三个Fragment来减少内存增长2.对于快速滑动的RecyclerView通过滑动系统配比来降低滑动速度public class TvRecyclerView extends RecyclerView { private static final String TAG = "TvRecyclerView"原创 2017-08-22 13:55:49 · 2955 阅读 · 0 评论 -
LoaderManager使用详解(四)---实例:AppListLoader
这篇文章将是我的第四篇,也就是最后一篇该系列的文章。请在评论里面告诉我他们是否有用。前面几篇文章的链接如下:一:Loaders之前世界二:了解LoaderManager三:实现Loaders四:实例:AppListLoader应大众的要求,我已经写了一个示例应用演示如何正确的实现一个自定义Loader。应用名称为:AppListLoader,转载 2017-07-26 15:50:17 · 250 阅读 · 0 评论 -
LoaderManager使用详解(三)---实现Loaders
这篇文字将介绍Loader类,并且介绍自定义Loader的实现。这是本系列的第三篇文章。一:Loaders之前世界二:了解LoaderManager三:实现Loaders四:实例:AppListLoader重中之重,如果你还没有读过前面两篇文章,我建议你在深入之前先读一读那两篇文章。先简短的总结一下这篇博客覆盖了什么内容。Loader之前的世转载 2017-07-26 15:45:06 · 415 阅读 · 0 评论 -
Android开发中必备的代码Review清单
前言本文收集了我自己工作以来提交代码前的所有检查点。事实证明,这样能有效提高自己的代码质量和功能的稳定性。所以推荐大家以后每次提交代码前,都可以看下这份Review清单哈。此外,可能还有些检查点我并没有发现,欢迎大家踊跃在评论区补充哈~清理操作1.页面退出时,是否完成必要的清理操作是否调用Handler的removeCallbacksAndMessages(null)来清空Handle原创 2018-01-10 10:04:39 · 293 阅读 · 0 评论 -
Android性能优化(七)之你真的理解ANR吗?
转载自:https://juejin.im/post/58e5bd6dda2f60005fea525c1、 前言在上一篇文章《Android性能优化(六)之卡顿那些事》中,我们提到了卡顿的成因、检测卡顿的途径以及避免卡顿的方法。卡顿在扩大就会产生大名鼎鼎的ANR(Application Not Responding),然后告诉用户你的App无响应,继续等待或者强制关闭,很大的概率用户可能会顺手卸载...转载 2018-02-09 14:06:51 · 560 阅读 · 0 评论 -
一种优雅的方式实现RecyclerView条目多类型
转载自:https://blog.csdn.net/xuehuayous/article/details/80021325下面以一个故事来讲来说明这中方式是怎么实现的。放弃vlayout大家都了解一般首页是非常复杂的,去年初项目引入vlayout来解决首页复杂布局的问题,后来对vlayout和databinding结合进行了封装,使用起来更方便简单,不仅首页使用,很多页面都在用,还封装...转载 2018-09-27 10:11:59 · 414 阅读 · 0 评论 -
Android ANR监控与分析
转载自:http://www.10tiao.com/html/203/201609/2649752287/1.htmlANR(Application Not Responding),系统检测到APP长时间没有反应,ANR虽然不是异常但会严重影响用户体验,所以上报解决ANR是非常必要的。ANR的触发条件“触发ANR的必要条件是主线程阻塞。分为以下三类:主线程在5s内没有处理完输入事件;Service...转载 2018-03-13 14:43:45 · 2794 阅读 · 0 评论 -
Android性能优化(六)之卡顿那些事
转载自:https://juejin.im/post/58d73b35570c350058d942c71、 Introduction对普通用户而言,类如内存占用高、耗流量、耗电量等性能问题可能不会轻易发现,但是卡顿问题用户一定会立马直观的感受到。本文就带你一览卡顿的发生、检测、及优化。2、 The Final Reason Why It Block ?在《Android性能优化(二)之布局优化面面...转载 2018-02-08 10:51:24 · 893 阅读 · 0 评论 -
Android 性能优化(五)之细说 Bitmap
转载自:https://juejin.im/post/58c3b29761ff4b005d906730在上一篇《Android性能优化(四)之内存优化实战》中谈到那个内存中的大胖子Bitmap,Bitmap对内存的影响极大。例如:使用Pixel手机拍摄4048x3036像素(1200W)的照片,如果按ARGB_8888来显示的话,需要48MB的内存空间(4048*3036*4 bytes),这么大...转载 2018-02-08 10:43:04 · 1139 阅读 · 0 评论 -
Android 性能优化(四)之内存优化实战
转载自:https://juejin.im/post/58b80c3b61ff4b006cd8c33d在上一篇《Android性能优化(三)之内存管理》中我们对Android的内存管理有了一定的认识,本篇文章从实际出发对内存进行优化,主要包含以下部分:1. Memory Leak内存泄漏:对于Java来说,就是new出来的Object 放在Heap上无法被GC回收(内存中存转载 2018-02-07 10:24:17 · 399 阅读 · 0 评论 -
Android性能优化(三)之内存管理
1、初识内存优化在Android的性能优化的各个部分里,内存的问题绝对是最令人头疼的一部分,虽然Android有垃圾自动回收机制不需要手动干预,但也恰因为此,出现内存问题如内存泄漏和内存溢出等,如果对内存管理机制不熟悉,会更加难以排查问题。因为内存方面的知识较多且不易理解,内存优化部分就分两篇文章进行,本文主要是关于Java、Android的内存分配、回收、GC等理论知识。2、内存分配转载 2018-02-07 10:11:46 · 367 阅读 · 0 评论 -
Android 性能优化(二)之布局优化面面观
转载自:https://juejin.im/post/58a442b661ff4b006c8a63f5Android 性能优化(二)之布局优化面面观一、初识布局优化通过《Android性能优化(一)之启动加速35%》我们获得了闪电般的App启动速度,那么在应用启动完毕之后,UI布局也会对App的性能产生比较大的影响,如果布局写得糟糕,显而易见App的表现不可能流畅。转载 2018-02-06 10:51:45 · 250 阅读 · 0 评论 -
Android性能优化(一)之启动加速35%
转载自:https://juejin.im/post/5874bff0128fe1006b443fa0一、前言随着项目版本的迭代,App的性能问题会逐渐暴露出来,而好的用户体验与性能表现紧密相关,从本篇文章开始,我将开启一个Android应用性能优化的专题,从理论到实战,从入门到深挖,手把手将性能优化实践到项目中,欢迎持续关注!那么第一篇文章我就从应用的启动优化开始,根据实转载 2018-02-06 09:57:28 · 271 阅读 · 0 评论 -
Android性能优化(十)之App瘦身攻略
转载自:https://juejin.im/post/59113583ac502e450280e5f31、 前言如果你对App优化比较敏感,那么Apk安装包的大小就一定不会忽视。关于瘦身的原因,大概有以下几个方面:对于用户来说,在功能差别不大的前提下,更小的Apk大小意味更少的流量消耗,也意味着更多的用户下载;对于产品来说,大于竞品的Apk意味着较低的下载基数,不利于验证产品策略;对于开发人员来说...转载 2018-02-10 08:30:08 · 418 阅读 · 0 评论 -
Android 性能优化(九)之不可忽视的电量
转载自:https://juejin.im/post/58fef4771b69e60058aab2d11、 前言移动互联网的大潮到来之后,我们都变身好男人:“用智能手机的男人都是好男人,因为晚上必须回家充电。”一句笑言,但也可以看得出来目前使用智能设备电量方面的问题。而开发者在电量消耗方面也起到了推波助澜的作用:相比于卡顿、内存泄漏等问题,开发者对电量消耗的重视程度极低;开发者和QA工作时,会习惯...转载 2018-02-10 08:24:42 · 455 阅读 · 0 评论 -
Android 性能优化(八)之网络优化
转载自:https://juejin.im/post/58ef22e3b123db0058214c601、 前言移动互联网发展到现在,用户的联网方式已经完成了由流量依赖到Wifi依赖的转变。虽然网络环境在变好,但也对网络的应用提出了更高的要求,同时开发人员对网络的重视度却在下降。确实Wifi场景下用户的网络质量变好了,而且用户对网络流量消耗的敏感度也在下降。但是对网络问题的忽视,在网络状态不好的场...转载 2018-02-09 14:10:13 · 586 阅读 · 0 评论 -
LoaderManager使用详解(二)---了解LoaderManager
了解LoaderManager这篇文章将介绍LoaderManager类,这是该系列的第二篇文章。一:Loaders之前世界二:了解LoaderManager三:实现Loaders四:实例:AppListLoader注意:要了解这一LoaderManager这部分知识,要求对Loaders如何工作有基本了解。Loaders的实转载 2017-07-26 15:35:13 · 275 阅读 · 0 评论 -
LoaderManager使用详解(一)---没有Loader之前的世界
转载自:http://blog.csdn.net/murphykwu/article/details/35287303第一部分 没有Loader之前的世界这一部分将对Loaders和LoaderManager做一个简短的介绍。第一节将在Android3.0之前如何载入数据,指出其缺陷。第二节讲述每个类的目的,以及它们异步载入数据的能力。这篇文章是有关Load转载 2017-07-26 15:30:01 · 496 阅读 · 0 评论 -
Android性能优化5 多线程并发的性能问题所幸的是,Android系统为我们提供了Looper、Handler、MessageQueue来帮助实现上面的线程任务模型: Looper: 能够确保线
1) Threading Performance在程序开发的实践当中,为了让程序表现得更加流畅,我们肯定会需要使用到多线程来提升程序的并发执行性能。但是编写多线程并发的代码一直以来都是一个相对棘手的问题,所以想要获得更佳的程序性能,我们非常有必要掌握多线程并发编程的基础技能。众所周知,Android程序的大多数代码操作都必须执行在主线程,例如系统事件(例如设备屏幕发生旋转)转载 2017-02-27 17:47:55 · 1416 阅读 · 0 评论 -
Android开发性能优化大总结
一.Android相关1. 采用硬件加速,在androidmanifest.xml中application添加android:hardwareAccelerated="true"。不过这个需要在android 3.0才可以使用。android4.0这个选项是默认开启的。2. View中设置缓存属性.setDrawingCache为true.3. 优化你的布局。通过Andr转载 2015-01-12 16:12:07 · 669 阅读 · 0 评论 -
Android实战技巧:ViewStub的应用
在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局。那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。但是它的缺点就是,耗费资源。虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Infl原创 2015-01-14 10:07:00 · 571 阅读 · 0 评论 -
深入理解Android之Gradle
格式更加精美的PDF版请到:http://vdisk.weibo.com/s/z68f8l0xTYrZt 下载Gradle是当前非常“劲爆”得构建工具。本篇文章就是专为讲解Gradle而来。介绍Gradle之前,先说点题外话。一、题外话说实话,我在大法工作的时候,就见过Gradle。但是当时我一直不知道这是什么东西。而且大法工具组的工程师还将其和Android转载 2015-09-17 15:04:17 · 855 阅读 · 0 评论 -
Android内存泄露案例分析
转载自:http://www.csdn.net/article/2015-09-07/2825631一款优秀的Android应用,不仅要有完善的功能,也要有良好的体验,而性能是影响体验的一个重要因素。内存泄露是Android开发中常见的性能问题。这篇文章,通过我们曾经遇到的一个真实的案例,来讲述一个内存泄露问题,从发现到分析定位,再到最终解决的全过程。这里把整个过程分为四个阶段转载 2015-09-07 15:52:11 · 744 阅读 · 0 评论 -
Android内存优化大全(全)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持!写在最前:本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总、挑选、简化后整理而成。所以我将本文定义为一个工具类的文章,如果你在ANDROID开发中遇到关于内存问题,或者马上要参加面试,或者就是单纯转载 2015-02-27 11:01:13 · 551 阅读 · 0 评论 -
Android 中 Handler 引起的内存泄露
在Android常用编程中,Handler在进行异步操作并处理返回结果时经常被使用。其实这可能导致内存泄露,代码中哪里可能导致内存泄露,又是如何导致内存泄露的呢?那我们就慢慢分析一下。AD:WOT2015 互联网运维与开发者大会 热销抢票在Android常用编程中,Handler在进行异步操作并处理返回结果时经常被使用。通常我们的代码会这样实现。转载 2015-01-25 22:15:51 · 483 阅读 · 0 评论 -
Android ListView 快速滑动的优化
ListView 为了减少对内存的占用,使用复用 View 的方式,这样是以时间换空间的思路。当滑动的时候,ListView 一直在更新各个 Item View ,当在快速滑动的时候,计算量就变大,特别是 Item View 比较复杂的布局的情况,甚至需要异步加载图片,这样就导致了大量的操作,而且有些操作是没有意义的,比如异步加载图片,这个一般可以认为是相对比较耗时的,加载完成的时间具有不确定性,原创 2015-01-22 09:50:36 · 2841 阅读 · 0 评论 -
Android 性能优化之使用MAT分析内存泄露问题
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/42396507),请尊重他人的辛勤劳动成果,谢谢!我们平常在开发Android应用程序的时候,稍有不慎就有可能产生OOM,虽然JAVA有垃圾回收机,但也不能杜绝内存泄露,内存溢出等问题,随着科技的进步,移动设备的内存也越来越大了,但由于Android设备的转载 2015-01-22 10:57:58 · 770 阅读 · 0 评论 -
内存分析工具 MAT 的使用
1.内存泄露排查方法Dalvik Debug Monitor Server (DDMS) 是 ADT插件的一部分,其中有两项功能可用于内存检查 :· heap 查看堆的分配情况· allocation tracker跟踪内存分配情况DDMS 这两项功能有助于找到内存泄漏的操作行为。Eclipse Memory Analysis Tools转载 2015-01-20 11:48:10 · 488 阅读 · 0 评论 -
编写高效的Android代码
编写高效的Android代码 毫无疑问,基于Android平台的设备一定是嵌入式设备。现代的手持设备不仅仅是一部电话那么简单,它还是一个小型的手持电脑,但是,即使是最快的最高端的手持设备也远远比不上一个中等性能的桌面机。 这就是为什么在编写Android程序时要时刻考虑执行的效率,这些系统不是想象中的那么快,并且你还要考虑它电池的续航能力。这就意味着没有多少剩余空间给你去浪费了,因此,原创 2015-02-06 10:03:36 · 417 阅读 · 0 评论 -
程序员必备的代码审查(Code Review)清单
在我们关于高效代码审查的博文中,我们建议使用一个检查清单。在代码审查中,检查清单是一个非常好的工具——它们保证了审查可以在你的团队中始终如一的进行。它们也是一种保证常见问题能够被发现并被解决的便利方式。软件工程学院的研究表明,程序员们会犯15-20种常见的错误。所以,通过把这些错误加入到检查清单当中,你可以确保不论什么时候,只要这些错误发生了,你就能发现它们,并且可以帮助你杜绝这些错误。转载 2015-02-06 14:59:34 · 580 阅读 · 0 评论