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事件是否會導致性能問題。
?識別無必要地獲取或保持分配的對象類型。
?確定代碼中可能存在問題的地方。