性能优化
像程序那样思考
这个作者很懒,什么都没留下…
展开
-
Android开发:Apk结构分析及减少包大小
作者:Hanking前言apk的大小对于下载apk应用的用户多少有直接的影响,由于手机内存的限制和网络环境的限制,同一个应用随着apk越大下载的和使用的人数就会越少,所以减少apk的大小是非常重要的。本文从apk编译过程,apk的组成,apk大小减少的方法三个方面分析如何减少apk的大小一、apk的编译过程在构建过程中,Android项目会被编译,打包,生成.apk文件,apk文件包含...原创 2019-12-30 16:52:17 · 662 阅读 · 0 评论 -
Android性能优化--启动优化
1. 前言一个应用App的启动速度能够影响用户的首次体验,启动速度较慢(感官上)的应用可能导致用户再次开启App的意图下降,或者卸载放弃该应用程序。本文会通过以下几个方面来介绍应用启动的相关指标和优化,提供应用的启动速度。整体文章思路如下:2. 冷启动&热启动通常来说,启动方式分为两种:冷启动和热启动。**冷启动:**当启动应用时,后台没有该应用的进程,这时系统会重新创建一个...原创 2019-12-10 16:15:54 · 230 阅读 · 0 评论 -
Android 开发:揭开App秒开的奥秘
什么是秒开Android App秒开,狭义的讲是指你的App的Activity从启动到显示所花费的时间在1秒以内,广义的讲是指这个过程所花费的时间越少越好。这个时间越短,你的App给用户的感觉就是响应越快,使用越流畅,用户体验更好。秒开是Android App的一个很重要的性能指标。需要我们持续的给予关注和优化。如何优化秒开Google提供了很多性能优化的建议和官方的工具,网上也有非常多的关...原创 2019-10-30 15:03:06 · 716 阅读 · 0 评论 -
都9102年了,Android 冷启动优化除了老三样还有哪些新招?
性能优化一直都是一个 Android 开发者逃不过的话题,启动优化则更是重中之重。启动速度可以直接影响一个 App 的留存率和转化率,没有人会希望自己点击之后还要等一会才打开。但是当我一番调研后发现,网上大部分启动优化相关的文章,套路都差不多,我称之为老三样。什么是老三样?将启动页主题背景设置成闪屏页图片这么做的目的主要是为了消除启动时的黑白屏,给用户一种秒响应的感觉,但是并不会真正...原创 2019-10-18 21:48:02 · 110 阅读 · 0 评论 -
面试官:你开发的app卡顿过吗?这样回答让面试官很满意
故事开始面试官:平时开发中有遇到卡顿问题吗?你一般是如何处理的?来面试的小伙:额…没有遇到过卡顿问题,我平时写的代码质量比较高,不会出现卡顿。面试官:…上面对话像是开玩笑,但是前段时间真的遇到一个来面试的小伙这样答,问他有没有遇到过卡顿问题,一般怎么处理的?他说没遇到过,说他写的代码不会出现卡顿。这回答似乎没啥问题,但是我会认为你在卡顿优化这一块是0经验。卡顿这个话题,相信大部分两年或...原创 2019-10-11 21:09:11 · 2228 阅读 · 0 评论 -
史上最全的Android性能优化面试题集锦
前言很多人面试之前,可能没有在互联网公司工作过或者说工作过但年头较短,不知道互联网公司技术面试都会问哪些问题? 再加上可能自己准备也不充分,去面试没几个回合就被面试官几个问题打蒙了,最后以惨败收场。下述是我收录整理的Android面试题汇总,由于篇幅原因,在这只把性能优化部分的题目列举出来,后续还会更新其余面试题内容,大家可以关注一下我,及时知晓我更新的知识点,同时这份面试集锦的整理也花费了我...原创 2019-07-22 14:27:03 · 10964 阅读 · 0 评论 -
OkHttp基本原理浅析
我们先来看下OkHttp的两个使用方法同步: //同步执行方法,不应该在UI线程使用 response = client.newCall(request).execute(); //异步方法 response = client.newCall(request).enqueue(new Callback() { @Override ...原创 2019-07-22 15:25:07 · 194 阅读 · 0 评论 -
Android APK瘦身笔记
导读:这是在今年项目体积优化时,记录的一些实战笔记,文中主要针对APK的包内容优化.其中优化手段主要有:字节码,资源,打包配置等优化手段.前言移动网络从2G->4G->5G,网速一步步提升,网络资费也逐渐便宜起来了. 记得上高中的时候5块钱/30M流量,能happy一个月.现在给我300M流量,说不定一会刷完前几年开始Android开发的职业生涯,那会公司对APP的包体积还特别敏...原创 2019-08-05 15:17:13 · 283 阅读 · 0 评论 -
Android性能优化:XML布局优化
进行Android应用开发时,界面布局也会对应用程序的性能产生比较大的影响,如果布局写得糟糕的话,那么程序加载UI的速度就会非常慢,从而造成不好的用户体验。因此,写出更高效、更优雅的布局是非常重要的。那么本篇文章我们就来学习一下,如何通过优化布局来提高应用程序的性能。首先第一点:重用布局文件,减少不必要的代码。有些时候我们可能需要反复利用某个已经写好的布局,如果你重复写这部分代码一方面是没有任...原创 2019-08-01 16:33:57 · 649 阅读 · 0 评论 -
Android拍照与相机适配问题汇总
问题一:onActivityResult方法中的data返回为空。问题原因:使用Intent调用手机内相机程序时,如果我们设置了照片的存储路径时,有数据表明,93%的机型的data将会是Null,所以如果我们指定了路径,就不要使用data来获取照片,起码在使用前要做空判断。解决方案:使用onActivityResult中的intent(data)前要做空判断。问题二:照片无法存储。问题原因...原创 2019-08-01 19:55:54 · 485 阅读 · 0 评论 -
又有MVP新写法了,这次我认为挺不错的
原文链接:https://www.j[ianshu.com/p/410770992f01]EasyMvp一个简单强大且灵活的MVP框架。 项目地址:EasyMvp特点List item一个 Activity 可以绑定多个 Presenter,以达到最大的复用功能。采用注解的方式实现依赖注入,减少耦合。可以灵活管理生命周期。使用起来方便简单使用例子可以在项目中找到。使用方法...原创 2019-09-02 14:15:37 · 164 阅读 · 0 评论 -
Android高级性能调优;不可思议的OOM!
推荐阅读:程序员必备的六大神器!这些工具软件等你很久了世界之最!史上最烂的开发项目:苦撑12年,600多万行代码…前言:本文发现了一类OOM(OutOfMemoryError),这类OOM的特点是崩溃时java堆内存和设备物理内存都充足,下文将带你探索并解释这类OOM抛出的原因。文末有demo地址。关键词:OutOfMemoryError, OOM,pthread_create fai...原创 2019-09-03 16:09:52 · 447 阅读 · 1 评论 -
Android性能优化:apk瘦身
为什么APK要瘦身。APK越大,在下载安装过程中,他们耗费的流量会越多,安装等待时间也会越长;对于产品本身,意味着下载转化率会越低(因为竞品中,用户有更多机会选择那个体验最好,功能最多,性能最好,包最小的),所以apk的瘦身优化也很重要,本文将讲述apk瘦身的相关内容。包体分析在Android Studio工具栏里,打开build–>Analyze APK, 选择要分析的APK包...原创 2019-07-17 19:43:08 · 166 阅读 · 0 评论 -
Android性能优化:Volley使用及其原理解析
前言在现在的Android开发之中,已经比较少人使用volley进行网络请求了,之所以现在还写这篇关于Volley的文章,是因为volley是一个优秀的框架,其设计严格遵循了面向对象的设计原则,学习volley的设计原则,对自己的项目开发有比较好的提示作用。使用方式1. 导入在AndroidStudio里面,只需要在Projrct structure里面添加依赖,在搜索框里输入“voll...原创 2019-07-19 16:55:03 · 2012 阅读 · 0 评论 -
Android:图片加载框架Picasso源码分析(Picasso 2.71828)
Picasso 是 Android 开发中最受欢迎的图片请求加载框架之一 ,它诞生于 2013 年,距今已有六年的生命。在这六年间 Picasso 发布过 21 个版本更新,而最近的一次更新为18年的 3 月 8 日,更新的版本号为 2.71828(文中统称为新版),该版本离上一次发布更新相隔了三年。本文主要分析新版 Picasso 的源码实现和它的一些 API 变化。本文过长,推荐关注我...原创 2019-07-16 20:26:18 · 222 阅读 · 0 评论 -
全方位性能调优:理解Android ANR的触发原理
一、概述ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR。一般地,这时往往会弹出一个提示框,告知用户当前xxx未响应,用户可选择继续等待或者Force Close。那么哪些场景会造成ANR呢?Service Timeout:比如前台...原创 2019-07-08 14:30:19 · 687 阅读 · 1 评论 -
Android程序员:Android 性能优化典范
2015年伊始,Google发布了关于Android性能优化典范的专题, 一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议。主要从三个 方面展开,Android的渲染机制,内存与GC,电量优化。下面是对这些问题和建议的总结梳理。0)Ren...原创 2019-07-09 20:51:36 · 141 阅读 · 0 评论 -
Android全方位性能调优:避免过度渲染
1)Why Rendering Performance Matters现在有不少App为了达到很华丽的视觉效果,会需要在界面上层叠很多的视图组件,但是这会很容易引起性能问题。如何平衡Design与Performance就很需要智慧了。2)Defining ‘Jank’大多数手机的屏幕刷新频率是60hz,如果在1000/60=16.67ms内没有办法把这一帧的任务执行完毕,就会发生丢帧的现象。...原创 2019-07-09 22:17:02 · 143 阅读 · 0 评论 -
Android全方位性能调优:Profiler
Android studio的分析工具分为:CPU、Memory、NetWork、Energy.CPU Profiler:从Android profiler面板选择指定设备和应用程序进入到CPU Profiler界面,我们能够直观的看到CPU的使用情况和线程的情况.分别介绍下相关标号的CPU Profiler的相关功能:1. 事件时间轴:表示当前分析的应用程序随着用户交互在不同活动的变化...原创 2019-07-10 11:20:31 · 864 阅读 · 0 评论 -
Android性能调优:App启动速度优化
一、App启动分类1.冷启动 Cold start在启动应用前,系统还没有App的任何进程。比如设备开机后应用的第一次启动,系统杀掉应用进程 (如:系统内存吃紧引发的 kill 和 用户主动产生的 kill) 后 的再次启动等。那么自然这种方式下,应用的启动时间最长。2.热启动 Warm start当应用中的 Activities 被销毁,但在内存中常驻时,应用的启动方式就会变为暖启动。相...原创 2019-07-11 15:51:36 · 5711 阅读 · 0 评论 -
Android:几种常用界面切换效果
Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画。它包括两个部分:一部分是第一个activity退出时的动画;另外一部分时第二个activity进入时的动画;在Android的2.0版本之后,有了一个函数来帮我们实现这个动画。这个函数就是overridePendingTransition@Overridepublic void onCreat...原创 2019-07-12 14:31:16 · 2016 阅读 · 0 评论 -
Android性能调优:冷启动白屏问题的分析和解决
问题重现我初次发现这个问题是在升级了Android Studio 2.0之后,当时Android Studio的版本是从1.5直接升级到了2.0,一个如此大版本的跨跃说明改动肯定是比较大的。然后从这个时候开始,每次我们将程序安装到一台新手机上并首次启动时,都会经历一个很长的白屏时间,如下图所示:上图中的播放速度是实时速度,没有经过加速或减速。可以看到,这就是一个空项目,里面几乎没有任何功能...原创 2019-07-12 17:07:49 · 297 阅读 · 1 评论 -
Android全方位性能调优:启动页面(闪屏页面)的实现
闪屏页面是指APP刚启动时的页面会自动跳转到主页面单单实现闪屏页面非常简单。闪屏界面的作用:1.展示自己软件的logo,口号标识语等2.作为广告平台,获取利益3.加载下一页面(其他Activity或全局)所需要的数据4.检查更新效果展示首先目录结构SplashActivitypackage com.hxh.splashactivitydemo;import androi...原创 2019-07-13 20:01:22 · 722 阅读 · 1 评论 -
Android:知乎开源的图片选择库
前言在实际开发中,图片选择器一直都是必不可少的一个部分,不管是 QQ 头像的设置,还是发送一条装逼的微信朋友圈,都要用到图片选择器来给用户选择他们想要上传的图片,最近知乎开源了一款图片选择库 Matisse 简直美哭了,而且完全遵循 Android 交互设计规范,实在是很良心。在开始正文之前,先欣赏一下这个图片选择器的效果是不是感觉相当的简洁好看,反正我是这么认为的。一、基本使用...原创 2019-07-14 20:32:26 · 315 阅读 · 0 评论 -
知乎 Matisse 源码解析,探究高效图片选择库的秘密
目录基本介绍整体的设计和实现流程资源文件夹的加载和展示主页图片墙的实现预览界面的实现总结一、基本介绍Matisse 是「知乎」开源的一款十分精美的本地图像和视频选择库。Matisse 的代码写的相当的简洁、规范,很有学习的价值。讲一下 Matisse 的一些优点:在 Activity 或 Fragment 都可以轻松的调用支持各种格式的图片和视频加载支...原创 2019-07-14 22:29:47 · 415 阅读 · 0 评论 -
Glide 源码学习:深入源码了解 Glide 图片加载原理
基于 Gilde 4.3.1Glide 是我非常喜欢使用的图片加载框架,这篇文章讲从源码的角度剖析 Glide 框架。从而得知 Glide 为我们做了哪些工作。本文过长,推荐各位看客关注我后再慢慢品尝~Glide 的使用参考文档 ImageView imageView = findViewById(R.id.test); ImgurGlide.with(getAppl...原创 2019-07-16 14:08:36 · 406 阅读 · 0 评论 -
Android性能优化:安装包优化
1.常规apk瘦身apk压缩包的大小经过优化之后变小1.1 apk中的图片的压缩对apk中的图片进行压缩【1】svg图片:文件是对图片的描述,牺牲CPU的计算能力的,节省空间。【2】webp图片:在图片压缩的时候可以指定压缩的格式为webp。在android中是支持webp图片显示的。使用的原则:简单的图标。图片格式的大小的比较:png>jpeg>webpwebp是由V...原创 2019-07-18 19:59:51 · 518 阅读 · 0 评论 -
Android Retrofit基本使用及原理
Retrofit其实我们可以理解为OkHttp的加强版,它也是一个网络加载框架。底层是使用OKHttp封装的。Retrofit注解说明请求方法请求参数基本使用1、在build.gradle内导入依赖库implementation 'com.squareup.retrofit2:retrofit:2.5.0'implementation 'com.squareup.retrofit...原创 2019-07-23 16:33:40 · 2386 阅读 · 0 评论 -
全方位性能调优:一次解决OOM的经历
OOMOOM(Out Of Memory)是Android应用开发中相信每个人都遇到过的问题,而OOM在crash log中的stack trace一般没有实际意义,因为是在分配内存的时候才会抛出OOM异常,而这个时候的stack trace和OOM的原因没有任何关系。所以OOM问题的定位和分析就需要多花费一些功夫。下面,我就结合一个例子,来讲讲怎么定位OOM问题。问题在程序员们把代码写完...原创 2019-07-07 20:46:47 · 394 阅读 · 0 评论