前言

转载请声明,转自【https://www.cnblogs.com/andy-songwei/p/10823372.html】,谢谢!

Android性能优化无疑是Android中的一个重点,也是一个难点。之所以说是重点,是因为无论在面试中还是工作中,都是“备受青睐”的:从笔者面试经验来看,面试官对性能相关的问题是乐此不疲;从工作经验来看,越是大厂,越是对代码质量苛刻,基本功能完成后,都需要对性能做一定的把控。之所以说是难点,是因为工作中性能优化的任务往往都是由经验比较丰富的工程师或者架构师来担任的,经验尚浅的童鞋往往力不从心。而且Android性能方面的问题比较广,如电量、内存、代码效率、屏幕流畅度等方方面面,想成为这方面的行家里手,真心不是件容易的事情,更不用说把它们都了解透彻了。

所以,在笔者工作的前几年里,经常对这类问题一头雾水,开发的app中性能问题似乎无处不在,但想认真去学,却又不知道从何入手。后来笔者发现,在Android官网中有专门的章节来介绍性能相关的问题,有宏观的指导,有概括性的总结,有相关工具的介绍,有良好的编码实践介绍,还有丰富的资源链接......总的来说,官网给像我这样想专门去学习却又不知从何下手的童鞋一个很好的入门指导。由于官网中大部分都是英文的,所以笔者这里特意进行了翻译,希望从这里入手,来系统性地学习Android性能相关的知识点。

官网中的篇幅

官网中为性能问题专门开辟的章节路径为:Android Developers > Docs > 指南 > Best practies > Performance

中文版官网地址为:https://developer.android.google.cn/topic/performance

如下四幅截图为该部分专门的章节,有将近30篇文章的篇幅。

   

  

 翻译后的文档链接

如上截图中,“Android Vitals”是Google Play中的一个工具,主要介绍这款工具以及如果通过这款工具来统计和分析性能相关的问题。由于该工具咱们平时的工作中接触不到,所有这里就没有翻译。“SMP Primer for Android”是一篇关于“对称多处理”入门教程,和CPU架构关系比较大,似乎和软件层的优化有点遥远,所以笔者暂时没读懂,所以也没有翻译,待以后有了深入的接触后,再补上。其它的一部分是中文版的官网中已经翻译了,剩余的为笔者的翻译了。

【官网翻译】性能篇(一)应用待机群组

  【进程和线程

【官网翻译】性能篇(二)通过线程提高性能

【官网翻译】性能篇(三)为电池寿命做优化——概述

  【对低电耗模式和应用待机模式进行针对性优化

  【监控电池电量和充电状态

  【确定和监控插接状态和基座类型

  【确定和监控连接状态

【官网翻译】性能篇(四)为电池寿命做优化——使用Battery Historian分析电源使用情况

【官网翻译】性能篇(五)为电池寿命做优化——测试电源相关的问题

  【缩减应用大小

【官网翻译】性能篇(六)管理应用内存

【官网翻译】性能篇(七)内存管理概述

【官网翻译】性能篇(八)无缝设计

【官网翻译】性能篇(九)保持应用响应

【官网翻译】性能篇(十)性能提示

    【在 Android Runtime (ART) 上验证应用行为

在上述链接中,带有【官网翻译】前缀的,为笔者翻译的文章,都记录在了博客中。其它的为中文版官网中自带的翻译。

结语

所谓“学海无涯,回头是岸”,哈哈!笔者在翻译的过程中也是相当痛苦的,虽然只翻译了其中的10篇,但是也差不多花了一个月的业余时间来完成。由于经常长时间对着屏幕,经常有种眼睛累到要瞎的感觉。而且这还只是官网中“性能”篇幅中的一小部分,而“性能”系列也只是整个Android相关知识中的九牛一毛,有时候感觉技术这条路很远很长,走下去还真是需要勇气啊!希望笔者的这篇文章和翻译的系列文章能对读者有一定的启迪作用,也更希望有读者日后也能对笔者指点一二,笔者将不胜感激!另外,古人常说“实践出真知”,这里介绍的还只是一些理论知识,要想成为高手,还需要大量的工作实践。最后,引用屈原老夫子的名句来共勉吧:路漫漫其修远兮,吾将上下而求索!!!

【朝花夕拾】Android性能篇之(八)来自官网的自白的更多相关文章

  1. 【朝花夕拾】Android性能篇之(六)Android进程管理机制

    前言        Android系统与其他操作系统有个很不一样的地方,就是其他操作系统尽可能移除不再活动的进程,从而尽可能保证多的内存空间,而Android系统却是反其道而行之,尽可能保留进程.An ...

  2. 【朝花夕拾】Android性能篇之(五)Android虚拟机

    前言 Android虚拟机的使用,使得android应用和Linux内核分离,这样做使得android系统更稳定可靠,比如程序中即使包含恶意代码,也不会直接影响系统文件:也提高了跨平台兼容性.在And ...

  3. 【朝花夕拾】Android性能篇之(一)序言及JVM

    序言        笔者从事Anroid开发有些年头了,深知掌握Anroid性能优化方面的知识的必要性,这是一个程序员必须修炼的内功.在面试中,它是面试官的挚爱,在工作中,它是代码质量的拦路虎,其重要 ...

  4. 【朝花夕拾】Android性能篇之(三)Java内存回收

    在上一篇日志([朝花夕拾]Android性能篇之(二)Java内存分配)中有讲到,JVM内存由程序计数器.虚拟机栈.本地方法栈.GC堆,方法区五个部分组成.其中GC堆是一块多线程的共享区域,它存在的作 ...

  5. 十分钟掌握Pandas(上)——来自官网API

    十分钟掌握Pandas(上)——来自官网API 其实不止10分钟,这么多,至少一天 一.numpy和pandas numpy是矩阵计算库,pandas是数据分析库,关于百度百科,有对pandas的介绍 ...

  6. 【朝花夕拾】Android性能篇之(八)ANR篇--草稿

    1.ANR概念 2.ANR发生场景 Android开发者官网 上说到了两个原因:(1)点击按键或者触摸屏幕等输入事件在5s内没有响应:(2)10s内没有完成广播事件.如下所示: Android wil ...

  7. 【朝花夕拾】Android性能篇之(七)Android跨进程通信篇

    前言 只要是面试高级工程师岗位,Android跨进程通信就是最受面试官青睐的知识点之一.Android系统的运行由大量相互独立的进程相互协助来完成的,所以Android进程间通信问题,是做好Andro ...

  8. 【朝花夕拾】Android性能篇之(四)Apk打包

    前言 APK,即Android Package,是将android程序和资源整合在一起,形成的一个.apk文件.相信所有的Android程序员是在IDE的帮助下,完成打包轻而易举,但对打包流程真正清楚 ...

  9. 【工利其器】必会工具之(三)systrace篇(1)官网翻译

    前言 Android 开发者官网中对systrace(Android System Trace)有专门的介绍,本篇文章作为systrace系列的开头,笔者先不做任何介绍,仅仅翻译一下官网的介绍.在后续 ...

随机推荐

  1. 网络配置工具iproute2和net-tools的基本原理和基本使用方法

    这是网络程序设计课程的第一次作业的博客,由于还是小白,分享的内容都是比较基础的东西,希望看到的各位同学可以提出指导意见,必将虚心听取. 这次分享的内容是网络配置工具iproute2和net-tools ...

  2. 《Java练习题》进阶练习题(三)

    编程合集: https://www.cnblogs.com/jssj/p/12002760.html 前言:不仅仅要实现,更要提升性能,精益求精,用尽量少的时间复杂度和空间复杂度解决问题. [程序68 ...

  3. LeetCode刷题总结-树篇(中)

    本篇接着<LeetCode刷题总结-树篇(上)>,讲解有关树的类型相关考点的习题,本期共收录17道题,1道简单题,10道中等题,6道困难题. 在LeetCode题库中,考察到的不同种类的树 ...

  4. 高精度模板 val.1

    目录 高精构造 结构体 char数组转高精: 高精加高精 高精乘单精 高精除单精 同样搬以前初三写的... 其实还有个val.2,搬到文章里去了 @ 在做一道斯特林数的时候被卡高精...于是滚来写一些 ...

  5. 分布式全文搜索引擎ElasticSearch—超详细

    1 ElasticSearch 1.1 ES的概念和特点 ES:全文检索的框架,专门做搜索,支持分布式.集群.封装的Lucene. 特点: 原生的Lucene使用的不足,优化了Lucene的调用方式 ...

  6. CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现

    CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现 参考文章1 参考文章2 By:Mirror王宇阳 漏洞原理 攻击者利用发现在服务器上包含(查看和潜在执行)文件的漏洞. ...

  7. Android 自定义吐司通知

    protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentV ...

  8. QT获取linux下的当前用户名

    故事背景:客户端启动的时候需要加载机器/home/xx/test.jpg的图片作为背景图,但是有的机器用户名叫AAA,有的机器名叫BBB,所以我需要获取当前用户的home目录 技术调研:QStanda ...

  9. 2019蚂蚁金服中高级Java工程师面试题及答案

    面试基础 谈谈一致hash算法? 按照hash算法来将对应的key哈希到一个具有2^32次方个桶的空间中,即0~(2^32)-1的数字空间.将这些数字头尾相连,想象成一个闭合的环形.如果集群中加入新的 ...

  10. 【转】浅谈命令查询职责分离(CQRS)模式

    原文链接:https://www.cnblogs.com/yangecnu/p/Introduction-CQRS.html 在常用的三层架构中,通常都是通过数据访问层来修改或者查询数据,一般修改和查 ...