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只有在意外關閉的時候,纔會被調用,只建議存儲臨時數據;