写在开头
android优化系列:
浅谈android内存优化
浅谈androidUI布局优化
本来在这方面,我们是没有太高的要求的,但是我为什么要考虑这些呢,还是因为我太无聊了。简单写写自己对于这两方面做的处理,记录自己的学习过程。
真喜欢这个gif图
网络优化那些事
网络优化,也是提升用户体验的一大利器。App的网络连接对于用户来说, 影响很多, 且多数情况下都很直观, 直接影响用户对这个App的使用体验. 总的来说,这方面分为三部分吧:
- 用户等待的时间(App请求等待时间长, 会给用户网络卡, 应用反应慢的感觉,这样是不好的)
- 流量耗费(流量是要钱的,我很在乎,不知道别人在不在乎)
- 电量用量(这个会在下一段写一下)
分析网络连接工具
Network Monitor,AS自带的Monitor工具。感觉还挺好用的。
http://www.jianshu.com/p/aaee2d27068e(没有用过的可以简单看下这个文章)
项目中用到操作:
1.减少Radio活跃时间
其实也就是减少网络数据获取的频次,在另一方面考虑,也减少了radio的电量消耗, 控制了电量使用。
这一方面可以从网络请求合并开始,这也考虑我们接口设计的能力了,接口设计要考虑网络请求的频次, 资源的状态等. 以便App可以以较少的请求来完成业务需求和界面的展示.比如说某个页面内请求过多,就可以考虑做一定的请求合并。
2.减少获取数据包的大小
这样做可以可以减少流量消耗,也可以让每次请求更快, 在网络情况不好的情况下也有良好表现, 提升用户体验。
- 图片的Size
图片相对于接口请求来说, 数据量要大得多. 故而也是我们需要优化的一个点. 我们可以在获取图片时告知服务器需要的图片的宽高, 以便服务器给出合适的图片, 避免浪费. 我们对于图片的资源存储用的是腾讯云的服务。所以可以在请求图片的url中添加诸如质量, 格式, width, height等path来获取合适的图片资源:
例子:
http://v2test-10000812.image.myqcloud.com/tencentyunRestAPITest?imageView2/2/w/400/h/600/q/85!我们可以指定他的宽高,质量等,当然还有其他很多操作,如果你也使用的话可以多看一下官方的东西。
缓存
适当的缓存, 既可以让我们的应用看起来更快, 也能避免一些不必要的流量消耗.如果你本地缓存一些json,也可以对没网的状态进行数据的显示处理,增加用户体验等等。
其他
精简数据格式吧,比如JSON 代替 XML(不过等于白说,现在基本都是json吧),WebP 代替其他图片格式。(webP是google新出的一种图片格式,旨在缩小图片体积的情况下,尽量好的显示图片。加快图片加载速度,提升用户体验。据说现在某宝和某东都再用webP格式的图片了)
电量优化那点事
Battery Historian:Google提供了一个开源的电池历史数据分析工具
https://github.com/google/battery-historian. (下面会给出学习链接)
其实Android手机的电量都主要消耗在:屏幕、网络连接、GPS、传感器上。
在需要网络连接的程序中,首先检查网络连接是否正常,如果没有网络连接,那么就不需要执行相应的程序。例如网络请求。
PS:具体的代码就不说了,你自己的Utils应该有这么一个工具类。
网络请求超时
在网络请求时,如果网络很差,请求需要很长时间,我们需要设置超时时间,减少网络消耗!
请求集中发送
在我们的某一款app中对数据有着严格的统计要求,所以数据提交服务端的时机就很重要的了 。我们选择电量充足或Wifi状态下发送。因为wifi会加快网络请求的速度,相对来说会减少用电量。在这里我们技术端使用JobScheduler实现,关于他的使用,请看下面介绍,是一位大牛翻译的外国的文档说明。
JobScheduler:
在Android开发中,会存在这么些场景 : 你需要在稍后的某个时间点或者当满足某个特定的条件时执行一个任务,例如当设备接通电源适配器或者连接到WIFI。幸运的是在API 21 ( Android 5.0,即Lollipop )中,google提供了一个新叫做JobScheduler API的组件来处理这样的场景。
学习链接:http://blog.csdn.net/bboyfeiyu/article/details/44809395
写在最后
关于这方面,我们做的也不够多,但是在学习方面看了很多优秀开发者的文章。在此记录下来,如果以后有需求或者大家有这方面的需求,推荐看一下。
http://blog.csdn.net/boyupeng/article/details/48495391
http://www.jianshu.com/p/c55ef05c0047
http://www.jianshu.com/p/09d878e4c6ab(电量优化wakelock)
http://blog.csdn.net/itheimach/article/details/70545139
http://www.jianshu.com/p/ebac88cdf9d6
http://www.jianshu.com/p/5d83d8649c98
http://blog.csdn.net/bboyfeiyu/article/details/44809395(JobScheduler学习)