Memory Advice API 是一項實驗性的原生 API,可協助 Android 應用程式保持在記憶體用量安全限制內。為了達到這個目標,API 會預估使用中的記憶體資源數量,然後在超過特定門檻時通知應用程式。API 也能直接向應用程式回報預估的記憶體用量百分比。
此 API 提供的估計資訊可協助判斷應用程式何時應調整記憶體用量,或找出未來版本應用程式的改善空間。調整項目可包含任何會改變記憶體用量的內容,例如降低視覺和音訊素材資源的詳細資料和品質。
預估記憶體資源包含 Malloc 配置的原生堆積記憶體,以及 OpenGL ES 和 Vulkan Graphics API 分配的圖形記憶體,讓 Memory Advice API 非常適合用於遊戲和大量使用圖像的應用程式。
預估值是依據以下項目計算得出:
- API 收集的裝置指標
- 裝置的機器學習資料
- 裝置測試
在 API 層級,Memory Advice API 會定義一組記憶體建議狀態,並使用一組函式將這些狀態傳遞給應用程式。
發布情況
Memory Advice API 是 Android Game Development Kit (AGDK) 的一部分,可透過下列通道發布:
- Android 遊戲 Jetpack 程式庫中的二進位檔版本。
- AGDK 下載頁面上的二進位檔版本。
- AOSP 上的原始碼。
遊戲應使用專為其建構環境建議的 Memory Advice API 版本。如果是 Android Studio,建議您使用 Jetpack 版本。如果是 Android Game Development Extension (AGDE),建議您在 AGDK 下載頁面上下載該版本。
功能
本節說明 Memory Advice API 功能。
記憶體狀態
API 會向應用程式回報下列記憶體狀態:
- MEMORYADVICE_STATE_OK
- MEMORYADVICE_STATE_APPROACHING_LIMIT
- MEMORYADVICE_STATE_CRITICAL
詳情請參閱 memoryadvice_memorystate 參考頁面。
回報記憶體狀態
API 支援透過輪詢或回呼機制回報記憶體狀態:
輪詢:
應用程式可隨時呼叫 API 以擷取記憶體狀態。回呼:
應用程式可以使用 Memory Advice API 註冊回呼函式。應用程式會指定回呼的呼叫頻率。API 會根據頻率決定應用程式記憶體條件即將接近安全限制或極低的情況下執行回呼的時機。如果記憶體狀態是安全的,則不會叫用回呼。回呼從其本身的執行緒執行,而不是從應用程式所屬的執行緒執行。
費用和通話頻率注意事項
Memory Advice API 會使用運算時間產生記憶體狀態。費用因裝置而異,但每次呼叫通常會介於 1 毫秒至 3 毫秒之間。決定記憶體狀態的輪詢頻率,或為記憶體狀態回呼指定頻率時,您應考量此開銷。
要求
裝置需求
- Android 4.4 (API 級別 19) 以上版本
應用程式相關規定
這個 API 僅支援原生應用程式 (主要為以 C/C++ 撰寫的應用程式)。
這個 API 僅支援 64 位元的應用程式。
這個 API 僅支援實體裝置,不支援模擬器。
NDK 版本要求
Memory Advice API 版本支援最熱門的 NDK 版本,請參閱版本資訊瞭解支援的 NDK 清單。
其他資源
問題和意見回饋
Memory Advice API 目前為 Beta 版,如果您有任何建議或在使用 API 時遇到問題,歡迎您提供意見回饋,請在 IssueTracker 中建立問題。