activity保存狀態和臨時數據

         android中,當我們對activity進行切換時,運行在後臺的activity很有可能被GC殺死。相應的,該activity裏面的數據也就丟失了。所以爲了保存這些臨時數據,我們可以通過重寫onSaveInstanceState方法來保存一些臨時數據。然後在onCreate方法中,獲取臨時數據。

    具體使用如下:

public class MainActivity extends AppCompatActivity {

    private EditText editText;
    private TextView textView;
    private final String KEY = "KEY";
    private SharedPreferences sharedPreferences;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.text);
        editText = (EditText) findViewById(R.id.edit);
        if(savedInstanceState != null) {
            editText.setText(savedInstanceState.getString(KEY));
        }
        sharedPreferences = getSharedPreferences("TEST",MODE_PRIVATE);
    }

    @Override
    protected void onResume() {
        super.onResume();
        textView.setText(sharedPreferences.getString(KEY,""));
    }

    @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        super.onSaveInstanceState(outState, outPersistentState);
        outState.putString(KEY,editText.getText().toString().trim());
    }

    @Override
    protected void onPause() {
        super.onPause();
        sharedPreferences.edit().putString(KEY,editText.getText().toString().trim()).commit();
    }
}

     重寫之後可以通過切換屏幕方向,測試保存的數據。而一些更重要的數據則可以通過sharedPreferences來進行保存!

   注:onSaveInstanceState只有在意外關閉的時候,纔會被調用,只建議存儲臨時數據;

   保存和恢復activity的狀態數據

發佈了86 篇原創文章 · 獲贊 6 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章