Android葵花宝典Android开发经验谈首页投稿(暂停使用,暂停投稿)

Andorid性能优化及工作经验

2017-11-03  本文已影响122人  Ch3r1sh

不知不觉做Android已经快4年,早期的开发工作中疲于业务功能的完成,都是怎么快怎么做,在后期遇到一些性能优化的地方,或是因为编码习惯,或是因为数据结构考虑设计不合理,或是简单的UI绘制性能等等都耗费大量的时间进行修补.

不定期更新。。。。。。。

性能优化的点

(1)内存优化

手机的内存根据手机的好坏是不同的,而每个应用可以使用的也是有上限的,当超出临界值时就会产生OOM.

1.1图片相关

1.2内存泄漏

1.3内存管理

Android自身是有一套默认的内存回收机制,根据进程的优先级来进行回收。

Foreground进程>Visible进程>Service进程>Background进程>Empty进程

优化

(2)编码习惯,数据结构

编码习惯

直接参考阿里巴巴的Java编码规范,阅读完后相信你会大有收获.

2.1数据结构

ArrayList适用于数据随机的的get,set**

LinkedList适用于数据的add,remove

Vector保证线程安全,效率稍低

(3)网络优化

网络的优化在App中也是很重要的一点,因个人对网络协议的研究也不深,此处的总结主要为C端在工作中的开发经验总结。

网络对用户产生以下问题

3.1优化

3.1.1减少网络请求的次数,资源状态

例:注册与登录模块,注册后的直接登录,常规需要C端调用注册后再继续调用登录,对于登录的这一流程可以结合业务直接让服务器完成.

3.1.2 使用GZip来对Body进行压缩减request和response
3.1.3 对于大量的全量数据传输,建议采用protobuf
3.1.4 图片的获取直接利用云端处理获取精准的图片大小,质量,格式等(类似7牛)
3.1.5 对网络数据进行缓存处理

例:Retrofit2,OkHttp3中可直接创建cache进行缓存

 OkHttpClient.Builder builder = new OkHttpClient().newBuilder();
  builder.cache(
      new Cache(context.getCacheDir(), CACHE_SIZE_BYTES));

If-Modified-Since作为请求头标签,第一次获取200状态,服务器返回Last-Modified,再次发送HTTP请求时,将服务器返回的Last-Modified发送,服务器获取判断数据是否已经更改,没有更改则直接返回304处理,数据改变则重复上述流程

3.1.6 C端对服务端协商契约

客户端与服务端进行契约,在处理网络时,对非正常数据抛到外层进行统一解析,避免无效使用,同时利于后期维护迭代

3.1.7 对设备进行监听结合一些特殊业务进行网络打包

对于特定的一些批量业务下载或者一个页面多个请求接口,如Splash页面缓存,皮肤下载等等,可以将其打包利用JobScheduler在空闲时间,充电并且是WIFI网络下,或者用户设置的时间进行下载处理.

3.1.8 弱网无网优化

在弱网环境甚至无网环境,某些特定业务为了提高体验或者说提高产品业绩,可优先对界面进行反馈,操作流程数据可保存下来,监听网络连接状态,后续使用JobScheduler在强网状态下进行发送处理(或者保存在数据库中,新开App时对数据库进行检测发送)

(4)UI优化

(5)数据库优化

  此块个人优化接触较少,缺省....后续补充

(6)线程优化

建议微信关注公众号腾讯Bugly,经常有意想不到的干货分享

(7)电量优化

其他经验

个人以及技术上



团队上



选择比努力重要,性格态度比能力重要

上一篇下一篇

猜你喜欢

热点阅读