Android无法优化应用,Android应用优化总结

原标题:Android应用优化总结

内存泄漏

最常见也是最严重的 :持有Activity 与Context引用,生命周期本该短于应用生命周期,该回收的没被回收掉,导致泄露

检测手段:leakcanary mit等

Handler泄露

new Handler 替换为 静态内部类

将持有当前Activity或Context 对象实例化为WeakReference对象

onDestory 时:handler.removeAllMessageAndCallback(null)

高级方案:仍采用静态内部类,提供CallBack,独立于使用者,避免Activity与Context直接引用

单例泄露

持有的Activity 使用WeakReference ,Context 使用ApplicationContext

去除不必要的Activity引用

泄露不止是Activity 与context,一旦持有比应用生命周期短的其他对象,也会发生泄露

此时需要考虑使用WeakReference

Fragment 之间静态属性引用 泄露

消灭静态属性

静态属性会一直持有当前Activity或Context引用

Fragment之间通讯可使用接口,Activity实现该接口, onAttach 将Activity转换为接口对象

Activity操作Fragmeng方式不变

高级方案:可使用MVVM ,ViewModel方式

Cursor 等游标、流的关闭

数据库操作:增删改查的游标,文件、网络操作流

用后close

List

onDestory销毁List:clear

WebView

onDestory销毁WebView :removeJava、removeAllView

高级方案:多进程

避免原则

尽可能保证持有的对象及时被回收,必须使用Activity的采用WeakReference,能使用ApplicationContext的不使用 当前Context

其他对象生命周期短于应用的,一旦持有了Context或Activity都有可能发生泄露,尽可能采用WeakReference

代码优化 优化的数据结构

HashMap 替换为SparseArray 等

枚举、匿名内部类、反射等

减少使用

布局,涉及过渡绘制等 背景

窗体背景,多余背景,减少过渡绘制有效手段

过渡绘制

include标签(通常用于公共布局组件)、merge(有效减少层级,但会出现不可控因素,属性失效等问题)、viewsub

减少不必要的层级

控件优化

比较突出的:

ImageView 与TextView 呈上下左右关系时,优先考虑

TextView增加drawable属性,即compoundDrawable

布局设置:drawableLeft ,drawableTop, drawableRight,drawableBoottom

图片文字间距使用:drawablePadding

代码设置:setCompoundDrawablesRelativeWithIntrinsicBounds(left,top,right,bottoom)

内存、网络、电池

BitMap的回收,应用不可见的监听,减少app被系统关闭的几率

安装包与第三方

无用资源,大图,图片适配,减少不必要的图片,png替换为.9,简单图片代码实现优先

lib 文件

架构

业务、实现分离

MVP或MVVM等

viewmodel

代码规则:命名,方法数,自解释

目的:便于维护

流程

测试环节

如:用例覆盖,情景覆盖,功能效果与产品需求匹配度等,数据抓取,可考虑以下方案增强

全员测试

开发阶段:

由开发把控,确认主要流程功能完成后打包安排测试,主要为产品确认功能实现情况,及时发现问题,以免后期不断产生功能修改,耽误开发进度

测试阶段:

除测试外所有相关人员,包括但不限于:前后端开发、产品、项目负责人

上线前:

最后的问题发现修改阶段,也是最后的问题修改阶段,避免上线前后发生重大问题

测试次数:

问题修改完一批次之后统一回归,可分为第一轮至第三轮甚至四轮,根据测试及bug情况安排,除第一轮外后续皆主要为回归,最后一轮进行线上环境测试,确认功能与稳定性,正式上线前可考虑发布小范围用户安装包进行用户实际环境测试,俗称灰度

测试用例

测试拿到需求之后可编写测试用例,此用例可指导其他人进行功能验证,减少测试人员压力

目的:控制bug数量,减少测试费时,尽可能的发现隐藏的问题,避免上线后发生重大事故

提升项目质量

数据抓取

可使用Charles,Fiddler

数据类问题可直接由bug测出人员定位,避免其他人浪费时间定位

版本分离

bug分离

上线后的bug确认是否为重大bug是否需要修改,一旦确认可下期修改,则可列为后期版本优先修改内容

api分离

最基本的数据稳定性保持方法

api上线时,安装包未必会及时被上传,此时线上环境已经发生变动,而用户所用仍为老版本,一旦数据不兼容,用户无法正常使用

api可根据app的versioncode与平台等多参数进行数据隔离

问题监测

主要为稳定服务

手段包括但不限于:

真实用户实时崩溃日志:百度等

内嵌的日志收集上传功能

后台统计与收集

开发阶段的崩溃收集:崩溃截取显示上传功能

开发阶段

编写高质量代码

性能优化

leakcanary 内存泄露

findbug bug 、隐藏问题

removed unused resoures 剔除废弃资源

lint 找出隐藏问题,优化代码,重点关注Performance 如泄露,Correctness,Security

大家都在看

805941275 435399051返回搜狐,查看更多

责任编辑:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android日期选择滚轮框架,GitHub - liwenzhi/wheelview: 滚轮效果的View,日期选择器

#wheelview滚动效果的View这段时间需要用到一个时间选择器,但是不能使用日期对话框,因为它是筛选条件框架下的,只能是View!这个WheelView改造后可以达到要求!这个wheelview框架使用的类不多,就几个&#xf…

html页面返回原理,浏览器输入URL到界面显示(HTML渲染)发生了什么?

浏览器从输入URL到界面显示一共经历了6个阶段1. DNS(域名)解析2. TCP连接(三次握手)3. 发送HTTP请求4. 服务器处理请求并返回HTTP报文5. 浏览器解析渲染页面6. 连接结束1. DNS(域名)解析一个网址到ip地址的转换,找到URL对应的IP。如www.xiaochongtec.cn到22.33.55.6…

nginx缓存HtmL文件,Nginx在缓存的html文件上返回404

我试图在没有索引页的所有.html文件中添加缓存,但是当我做了一些更改时,我的文件进入了404找不到页面。Nginx在缓存的html文件上返回404这是我对我的默认配置,没有任何改变,我做了,没有工作。server {listen 80;server…

韩顺平轻松搞定网页设计(html+css+js),韩顺平轻松搞定网页设计方案(html+css+js)之javascript现场授课笔记(完整版).doc...

2011韩顺平轻松搞定网页设计(htmlcssjs)之javascript现场授课笔记(完整版)视频18整和19的前半部分不用看Javascript的基本介绍JS是用于WEB开发的脚本语言:脚本语言是什么:脚本语言不能独立使用,它和HTML/JSP/PHP/ASP.NET配合使用脚本语言也有…

大学计算机基础知识点图文,大学计算机基础知识点超详细总结

大学计算机基础知识点超详细总结 第一章 计算机及信息技术概述1. 电子计算机的发展历程①1946 年 2 月由宾夕法尼亚大学研制成功的 ENIAC 是世界上第一台电子数字计算机。 “诞生了一个电子的大脑” 致命缺陷:没有存储程序。②电子技术的发展促进了电子计算机的更新…

计算机专业学comsol,有关COMSOL的学习心得,与同是初学者的朋友共勉! - 仿真模拟 - 小木虫 - 学术 科研 互动社区...

接触COMSOL也有一年时间了,相信很多朋友都有这样的感触,那就是完全不知所措,无从下手。根据网上的一些经验,参考案例,看用户手册,折腾了几个月甚至大半年的时间,对于模型计算的各种错误一头雾水…

兰州交通大学计算机科学与技术学院,兰州交通大学计算机科学与技术

职朋圈友兰州交通大学 | 计算机科学与技术 | 本科算机科学与技术学科为甘肃省省级重点学科,为硕士一级学科授权点,拥有国家级计算机实验教学示范中心、国家级交通信息类创新人才培养模式实验区。专业师资力量雄厚,2009年被授予国家级“计算机…

圣地亚哥的计算机科学在哪个学院,加州大学圣地亚哥分校计算机科学在哪个学院?...

加州大学圣地亚哥分校计算机科学在工程学院加州大学圣地亚哥分校雅各布工程学院成立于学校建校之初的1964-1965年,共开设6个系,拥有250多位世界级教师,开设本科、硕士和博士三个阶段的课程教育,目前共有本科生6025名,硕…

计算机网络检错码和纠错码的特点,检错码和纠错码有何不同?试比较在网络通信中使用时各自的优缺点。...

检错码和纠错码有何不同?试比较在网络通信中使用时各自的优缺点。更多相关问题心理发展的速度可以有个别差异,可以加速或延缓,但发展的顺序一般不能改变。这说明心理发展具有(德国邓克尔发现:人看到某物品具有一种功能后就很难看出…

云星空计算机名访问不可以,03.PLM系统访问金蝶云星空(webapi):读取基础资料编码、名称...

1. 需求描述PLM系统中的物料,BOM同步到金蝶云星空系统中时,构造的json数据中,一些基础资料字段需要传递编码,而不是名称。 本接口提供获取所有基础资料的编码、名称,可作为PLM系统中的对照关系。2. 接口定义2.1 请求地…

js复制html到粘贴板,用clipboard.js实现纯JS复制文本到剪切板

以前很多人都是用ZeroClipboard.js来实现网页复制内容,火端也是用它。ZeroClipboard是利用flash来实现的,ZeroClipboard兼容性很好,但是由于现在越来越多的浏览器不支持flash,导致一些没法正常使用了。今天火端开始使用clipboard.…

计算机 国际顶尖级会议排名,计算机学科国际会议排名.doc

计算机学科国际会议排名中科院计算所会议会议名称会议介绍代表领域1ACM SIGCOMM: ACM Conf on Communication Architectures, Protocols & AppsACM的旗舰会议之一,也是网络领域顶级学术会议,内容侧重于有线网络,每年举办一次,…

教师计算机excel培训教案,Excel培训教案..doc

三灶中心小学教师信息技术应用能力培训教案(excel部分)excel培训计划安排2学时,通过实例来进行讲解。具体讲解内容及时间进度视老师们的掌握情况酌情安排。附实例如下:培训内容:实例一: 建立与编辑工作表一、实验目的1. 掌握启动和…

计算机程序设计a,计算机程序设计 A(1620401)

计算机程序设计 A 是一门介绍了 C 语言基本概念并将其在程序设计中运用起来的课程。在本课程中,将会介绍如何用 C 语言完成基本的输入输出、数学运算、分支结构表达、循环结构表达;同时,我们会学会如何使用函数对程序进行组织、写出良好的程序…

计算机设备的存放,计算机硬件储存设备与网络储存的发展现状

计算机的出现,改变了人们的生活和生产,而计算机硬件技术的发展,则为计算机储存开辟了新的发展方向和途径。而随着时代的进步,计算机储存技术的发展也是日新月异,现在我们所使用的云储存技术,就是储存技术发…

计算机考研408哪个视频好,408计算机考研视频课哪个好

408计算机考研视频课哪个好?如今,考研培训班比比皆是,选择适合自己的成了很多考生的难题。如今的考研网课辅导,很适合考生复习备考。网络学习很方便,只要你有电脑或者手机,不管在哪里都可以学习,没有时间和地点的限制,另外不懂的知…

计算机键盘没有fn,键盘Fn键失灵怎么解决?键盘Fn键失灵的修复方法

电脑键盘是电脑输入设备中最常用的设备之一,也是大家使用最频繁的的设备。其实键盘Fn键占据着很大分量,Fn键能够实现很多功能,如控制音量、打开关闭摄像头、屏幕亮度调节等。如果Fn键失灵的话,那就会对电脑造成很大的影响,有什么办法修复?下面…

计算机cpu风扇不转怎么办,计算机CPU风扇不转怎么办

据一些计算机用户反映,一些组装机在使用时并没有什么异常,但在主板BIOS中,CPU风扇转速报告显示为0 rpm(转/分),那么这种情况是不是表示你的cpu风扇不转了呢?其实未必!由于目前大部分的ATX架构主板都支持风扇…

vs简易计算机等于号代码,等于(=)vs.

不同算子LIKE和是不同的操作者。这里的大多数答案都集中在通配符支持上,这并不是这些操作符之间唯一的区别!是对数字和字符串进行操作的比较运算符。比较字符串时,比较运算符将整串.LIKE比较的字符串运算符。逐字逐句.让事情变得更复杂的是&a…

逆水寒最新的服务器7月12日,《逆水寒》7月12日更新内容一览

六、 优化和调整1. 在论武中自动禁止辅助吃药功能,避免频繁提示“不可以吃非论武专用药”的消息。2. 优化队伍和帮会聊天频道的消息显示,减少大部分玩法提示消息在队伍和帮会频道的显示。3. 百里传音和千里传音不再会被系统消息顶掉。4. 为防止恶意刷屏&…