OnTrimMemoryの使用


今日偶然にOnTrimMemoryのいくつかの知識を見て、そこで関連する知識を総括して、興味のある同志は少し見ることができます
  • OnLowMemory OnLowMemoryはAndroidが提供するAPIであり、システムメモリが不足し、すべてのバックグラウンドプログラム(優先度backgroundのプロセス、バックグラウンドで実行されるプロセスではない)が殺された場合、システムはOnLowMemoryを呼び出す.システムが提供するコールバックは、Application/Activity/Fragementice/Service/ClontentProvider上記のシステムが提供するAPIのほか、ComponentCallbacksを独自に実現し、API登録することでOnLowMemoryコールバックを得ることができます.例えば、public static class MyCallback implements ComponentCallback{@Override public void onConfiguration Changed(コンフィギュレーションarg){}
    @Override
    public void onLowMemory() {
        //do release operation
    }
    
    }その後、Context.registerComponentCallbacks()は、適切なタイミングでコールバックを登録すればよい.このようなカスタマイズされた方法により、システムが提供するコンポーネントに限定されることなく、多くの場所でコールバックを登録することができる.
  • OnTrimMemory OnTrimMemoryはAndroid 4.0以降に提供されるAPIであり、システムは異なるメモリ状態に応じてコールバックする.システムが提供するコールバックは、Application/Activity/Fragement/service/ClontentProvider OnTrimMemoryのパラメータがint値であり、異なるメモリ状態を表す:TRIM_MEMORY_COMPLETE:メモリが不足し、バックグラウンドプロセスリストの最後にプロセスがクリーンアップされ、TRIM_がクリーンアップされます.MEMORY_MODERATE:メモリが不足しており、バックグラウンドプロセスリストの中央にあります.TRIM_MEMORY_BACKGROUND:メモリが不足しており、このプロセスはバックグラウンドプロセスです.TRIM_MEMORY_UI_HIDDEN:メモリが不足し、プロセスのUIが表示されなくなりました.以上の4つは4.0増加
  • TRIM_MEMORY_RUNNING_CRITICAL:メモリ不足(バックグラウンドプロセスが3個未満)であり、優先度が高いため、メモリTRIM_をクリーンアップする必要があるMEMORY_RUNNING_LOW:メモリ不足(バックグラウンドプロセスが5個未満)であり、優先度が高く、メモリTRIM_をクリーンアップする必要があるMEMORY_RUNNING_MODERATE:メモリ不足(バックグラウンドプロセスが5個以上)であり、優先度が高く、メモリをクリーンアップする必要がある3個以上が4.1増加システムにもContext.registerComponentCallback()に登録すると、システムにコールバックされます.OnLowMemoryとOnTrimMemoryの比較1、OnLowMemoryがコールバックされた時、すでにバックグラウンドのプロセスがありません;onTrimMemoryがコールバックされると、バックグラウンドプロセスもあります.2,OnLowMemoryは最後のバックグラウンドプロセスが殺されたときに呼び出され、一般的にはlow memory killerがプロセスを殺した後にトリガーされる.一方、OnTrimMemoryのトリガは頻繁で、プロセスの優先度を計算するたびに、条件を満たす限りトリガされます.3,ワンタッチクリーンアップでOnLowMemoryはトリガーされずOnTrimMemoryは一度トリガーされます.