サーチ…


メモリトリミングにデータを保存する

public class ExampleActivity extends Activity {
    
    private final static String EXAMPLE_ARG = "example_arg";
    private int mArg;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_example);
        
        if(savedInstanceState != null) {
            mArg = savedInstanceState.getInt(EXAMPLE_ARG);
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(EXAMPLE_ARG, mArg);
    }
}

説明

では、ここで何が起こっているのですか?

Androidシステムは、できるだけ多くのメモリをクリアするよう常に努力します。したがって、あなたの活動がバックグラウンドにonTrimMemory() 、別のフォアグラウンド活動がその共有を要求している場合、Androidシステムはあなたの活動についてonTrimMemory()を呼び出します。

しかし、それはすべてのあなたの特性が消えなければならないというわけではありません。あなたはBundleオブジェクトにそれらを保存する必要があります。バンドルオブジェクトは、メモリを賢明に処理する方がはるかに優れています。バンドル内では、すべてのオブジェクトが一意のテキストシーケンスで識別されEXAMPLE_ARG 。上記の例では、整数値変数mArgは参照名EXAMPLE_ARG下に保持されていEXAMPLE_ARG 。アクティビティが再作成されると、Bundleオブジェクトから古い値を抽出するのではなく、最初から抽出します



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow