概要
Androidアプリは、メモリが不足すると
システムからメモリ解放を促されるコールバックを受け取ります。
それが onTrimMemory() です。
onTrimMemoryとは?
onTrimMemory() は、
システムが「メモリが足りなくなってきたよ」と通知してくれるコールバックです。
Activity や Service、Application でオーバーライドできます。
override fun onTrimMemory(level: Int) {
super.onTrimMemory(level)
Log.d("Memory", "level = $level")
}
いつ呼ばれるか
- 他アプリがメモリを使っている
- バックグラウンドアプリが多い
- 端末の空きメモリが減ってきた
つまり、まだ強制終了ではない段階で通知が来るのがポイントです
levelそれぞれの対応
TRIM_MEMORY_UI_HIDDEN
ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN
アプリのUIが完全に見えなくなったとき。
キャッシュ解放のベストタイミング
TRIM_MEMORY_RUNNING_LOW
アプリはフォアグラウンドだが、メモリが少なくなってきた状態。
→軽い解放を検討
TRIM_MEMORY_RUNNING_CRITICAL
かなり危険な状態。
→積極的にメモリを解放する
TRIM_MEMORY_BACKGROUND
バックグラウンドにあり、
システムがメモリを回収しようとしている状態。
→大きめのキャッシュを解放