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 下載頁面上的二進位檔版本。
- Android 開放原始碼計畫的原始碼。
遊戲使用的 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 僅支援實體裝置,不支援模擬器。
NDK 版本要求
Memory Advice API 版本支援最熱門的 NDK 版本,請參閱版本資訊瞭解支援的 NDK 清單。
其他資源
問題和意見回饋
Memory Advice API 目前為 Beta 版,歡迎您提供意見回饋。如有任何建議或在使用此 API 時遇到問題,請在 IssueTracker 中建立問題。