Activityはシステムによって殺され、データの記憶と回復

1562 ワード

1、データの保存方法:onSaveInstanceState(Bundle outState)
トリガ条件:Activityはfinishを実行していません.例えば、homeキー、電源キー、回転Activity、メモリ不足などです.このデータの保存はすべて一時的です.永続的なデータを保存するにはonPauseを使用します.
2、データの回復方法:onRestoreInstanceState(BundlesavedInstanceState)
トリガ条件:onSaveInstanceStateがトリガされ、Activityがシステムによって回収された後、再び開きます.
3、データの復元方法:Create(Bundle savedInstanceState)
トリガー条件:Activityインスタンスを作成する場合
4、次はActivityで、実践してみましょう.
@Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("test","test ");
        Log.e(" :","test ");
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        String test = savedInstanceState.getString("test");
        Log.e(" :",test);
    }

HOMEキーを押して、onSaveInstanceStateをトリガし、プログラムはバックグラウンドに戻り、システムがActivityを回収し、再び開き、onRestoreInstanceStateをトリガします.
注意:Activityを迅速にシステムに回収させたい場合は、携帯電話の設定を開き、開発者のオプションを開き、保留しない活動を開きます.
これにより,ユーザがホームキーを押すと,Activityが回収される.
5、同理Fragmentの中
@Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
    }

    @Override
    public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
        super.onViewStateRestored(savedInstanceState);
    }

データを復元する方法名が変わっただけです.
もう一度言って、一時的なデータを保存するのに適しているだけで、持続的なデータを保存することはできません.そうしないと、データが失われ、システムに回収される可能性があります.