Android Go初探
Android Ore(Go edition)
简介:
Android Go并不是一个独立的操作系统,它只是Android O的一种轻量级配置方案,专为1GB以下内存的机型设计,
在这种设置下,一些消耗大量资源的功能将被关闭,同时预装的应用也是轻量级的,不会消耗大量系统资源和数据流量。Google在会上斌没有说到相关Android Go上的功能的变化,但可以想象到,必定会有部分占用太多资源的非必要的一些功能拿掉,如果在没有功能缺失的情况下,入门级设备的性能就能得到很棒的优化,那么就不会出现Android Go, 而将会是一个非常nice的Android O。而具体的内容,需要等其发布之后才能去一探其究。
Go版本的优化的三个方向:
1. OS
改善了整个平台的内存使用情况,确保app能够在1GB以下内存的设备上高效的运行。据说,Go版本减少了大约一半的存储空间。
2. APP
增加了新的硬件功能常量,能够灵活区分出是为正常还是低内存设备设计的应用软件。
PackageManager.FEATURE_RAM_LOW = "android.hardware.ram.low" //RAM <= 1GB
ActivityManager.isLowRamDevice() return true;
PackageManager.FEATURE_RAM_NORMAL = "android.hardware.ram.normal"
Googel重新设计适合Go版本的应用, 使之占用更少的内存,在低端机上有更好的表现,包括包括YouTube Go、谷歌地图Go、Gmail Go等, 同时, 谷歌还专门为Android Go开发了几个新应用, 比如Google Go和Files Go。Google Go是一款修改版的Google Lite应, 能够让用户更容易的找到流行信息、网站和应用程序,转换Gif动画和文字。而Files Go则是一款文件管理器, 可以让用户管理智能手机的存储空间。
3. Googel Play
AndroidOreo Go平台的Play Store商店与普通的Google Play商店所有内容一样,但更适合低存储容量设备。
谷歌额外增加了一个特色应用板块,专门为Android Go设备推荐轻便、好用、适合的应用。通过 Googel Play的一些应用为开发者
提供优化经验和开发指南。
如何针对运行于Go版本的设备优化APP?
为了确保应用能够在Android Go版本上良好的运行,需要参考以下指导意见:
- 需要在manifest添加声明:
<uses-feature android:name="android.hardware.ram.low" android:required="true"/>
- targetSdkVersion应该是Android最新的版本,Android Go设备只能运行在API 26及其以上的版本。
- 设备上的应用程序大小应该小于40MB。
- 应用程序内存使用的PPS(Proportional Set Size)不应该超过50MB,
游戏内存使用的PPS不应该超过150MB。
——PSS:实际使用的物理内存,按比例分配共享库占用的内存。 - 应用程序的启动时间最小,应在5s之内。
- 有效的使用内存(看下一标题)。
补充:通过dumpsys命令可以查看到app的内存信息,如图,可以看到PPS值是:42168
pss1.png
如何有效的使用内存?
好的内存管理才能使APP运行得更稳定、性能更好。
减少低成本设备上的内存占用
- 动态调整内存的占用,确保不同RAM设备之间的兼容。
- 利用isLowRamDevice()和getMemoryClass()来确定运行时内存限制,通过这些信息,缩小内存的使用。
比如:在低内存设备上使用低分辨率的图片。 - 管理应用内存(具体内容可参考Googel开发者平台)。
避免长时间运行的进程
长时间运行的进程驻留在内存中,会降低设备的内存,大多数情况下,APP的运行过程应该是:
通过某个事件唤醒APP;处理数据;关闭。
可以使用 Firebase Cloud Messaging (FCM) 和 GcmNetworkManager来避免长时间运行的后台服务,减少设备的内存压力。
内存使用的检查
利用Android Studio提供的Memory Profiler tool,能够在设备运行时监控内存的使用情况。
可以帮助捕获无意的内存占用增长,使用该工具执行以下操作:
找出不希望的GC事件是否会导致性能问题。
识别无必要地获取或保持分配的对象类型。
确定代码中可能存在问题的地方。