2017-07-28 31 views
0

我正在寫一個〜1GB內存佔用的應用程序。 該應用在4GB內存的設備上運行良好,但在內存低於3GB的設備上,它會觸發積極的內存回收,有時會觸發OOM殺手並降低系統級別的用戶體驗(例如,需要很長時間才能返回前面的應用程序,在後臺的音樂播放器被殺死。)如何在android中檢測內存壓力,內存回收攻擊性或OOM殺死級別?

我想知道是否有可能查詢系統內存狀態並相應地調整我的應用程序的內存使用情況,例如在系統即將殺死ActivityManager.RunningAppProcessInfo.IMPORTANCE_SERVICE級別的進程之前保守地使用內存。

這可能嗎?

回答

1

首先,您可能要分析你的應用程序,看看你真的需要這麼大的內存分配不斷:

然後,你必須onTrimMemory()回調(API 14+ ),當設備短缺時可用於釋放一些資源:

當操作系統確定對於從進程中刪除不需要的內存的進程而言,這是一個好時機 。這將會發生,例如當它在後臺運行時,並且沒有足夠的內存來保持儘可能多的後臺進程運行。

相關問題