一、 ART運行環境優化
ART (Android Runtime) 已經是 Android 的默認運行時環境,它在 11 版本中得到了優化。通過使用圖像化功能來改進 ART 垃圾收集器,從而大大減少了系統操作,在更高的頻率下執行垃圾收集。ART 還使用了參數化編譯策略,在首次啟動時生成代碼,從而改善應用啟動所需的時間,同時還減少了對 CPU 和系統資源的負載。
// 通過設置參數改進編譯策略
dex2oat --compiler-filter=$MODE
二、新的圖形和視頻編解碼器
Android 11 對現有的圖形和視頻編解碼器的性能進行了優化。其中,VP9 視頻編解碼器的新版本提高了其在 Android 上的實現效率,這也讓視頻播放大幅度減少了 CPU 使用率。在圖形方面,ImageDecoder API 的增強使應用能夠更有效地處理需要瞬時解碼的格式。
//使用ImageDecoder解碼Bitmap
ImageDecoder.createSource(context.getContentResolver(), uri).decodeBitmap()
三、新的磁盤 I/O 具有更好的安全性和性能
Android 11 新增了一種名為 O_DIRECT 的選項,可用於對非緩存 I/O 請求所執行的磁盤訪問進行優化。在使用此選項時,應用程序可以使用更少的系統資源來傳輸數據,同時也降低了安全性風險,因為 O_DIRECT 不使用系統緩存。此外,Android 11 還支持 FS-verity 簽名驅動程序,該程序可以確保只有那些通過 VFS API(Virtual File System API)簽名的文件才能被訪問,這進一步提高了文件的安全性。
//使用 O_DIRECT 進行非緩存 I/O
int fd = open("/path/to/my/file", O_RDWR | O_DIRECT);
四、內存優化
Android 11 中的內存優化可以讓應用程序更有效地使用系統資源,從而提高應用程序的性能。例如,系統會使用 LMKD(Low Memory Killer Daemon)控制進程的內存使用情況,LPD(Low Power Daemon)則使用進程狀態來優化應用程序的電池使用效率。此外,Android 11 還增加了機架感知內存分配,可以在多個節點之間動態地分配內存,從而改進 Android 在集群環境中的性能,提高預測性和穩定性。
//使用機架感知內存分配
MemoryAllocator alloc = MemoryAllocator.getInstance(
MemoryTag.NATIVE_DEFAULT,
MemoryMode.STANDARD);
ByteBuffer byteBuffer = alloc.allocate(1024);
五、Wi-Fi 和網絡性能
Android 11 對 Wi-Fi 和網絡連接進行了優化,以改進相應的性能。其中,應用程序可以利用 Android 11 中的網絡指示器來獲得所有相關連接的信息,並使用新的 API 以快速啟動網絡。此外,通過將管理電源和隨意的網絡流量分離,Android 11 還可以提高 Wi-Fi 的效率,從而提供更高的速度和更好的性能。
//啟動一個Wi-Fi網絡
WifiNetworkSpecifier.Builder builder =
new WifiNetworkSpecifier.Builder()
.setSsid(ssid)
.setWpa2Passphrase(password);
NetworkRequest request =
new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.setNetworkSpecifier(specifier)
.build();
NetworkCallbacks callbacks = ...;
ConnectivityManager connectivityManager =
getSystemService(ConnectivityManager.class);
connectivityManager.requestNetwork(request, callbacks);
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/191065.html