Android 四大組件學習之Activity六

來源:互聯網
上載者:User

Android 四大組件學習之Activity六

本節學習Activity的狀態儲存與恢複。

先用例子開始:

布局檔案主要是實現如下,大家自行編寫

Activity邏輯代碼:

 

public class FiveActivity extends Activity {private Button setButton;private Button getButton;private EditText editText;private float value;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_five);setButton = (Button)findViewById(R.id.button1);getButton = (Button)findViewById(R.id.button2);editText = (EditText)findViewById(R.id.editText1);setButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub value = 1.234f;editText.setText(hello world);}});getButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString string = editText.getText().toString();Toast.makeText(FiveActivity.this, string+ +value, 0).show();}});}@Overrideprotected void onSaveInstanceState(Bundle outState) {// TODO Auto-generated method stubLog.i(FiveActivity, onSaveInstanceState);super.onSaveInstanceState(outState);}}
第一種情況:
按set按鈕,並且按get按鈕

 

當然了,這時候按back按鈕,當再次進入後,會發現輸入框裡沒有內容,同時按get得到為0.0

同時第一種情況中我的列印Log.i(FiveActivity, onSaveInstanceState);始終也是沒有列印

接著第二種情況:

當我們set後,再按get後。 這次不按Back鍵,這次按Home鍵:

當我們按Home鍵後,我們的Activity就處於stop狀態,這時候我們的列印語句出現了

這時候我們手動殺死FiveActivity

這時候在啟動Activity,當再次get時就會發現:

EditText中的文字Hello World依舊存在,而我的Value變數變為0.0了。

 

總結:

1: 對於第一種情況,Android系統覺得是使用者自願的行為,覺得那就沒有儲存的必要了。

2: 對於第二種情況,EditText中的文字存在那是因為Android系統中幾乎對所以的UI都實現了OnSaveInstanceState方法,這是預設的實現。所以當我們Home出去時就會列印出現,至於我們的變數為啥沒有恢複,很明顯那是因為沒人儲存它的值,這就得需要我們程式員自己手動儲存。

 

當我們在OnCreate方法中添加:

 

if(savedInstanceState != null)value = savedInstanceState.getFloat(1234);

protected void onSaveInstanceState(Bundle outState) {// TODO Auto-generated method stubLog.i(FiveActivity, onSaveInstanceState);outState.putFloat(1234, value);super.onSaveInstanceState(outState);}

這樣的話,當殺死進程後,再次進來我們的資料就會正常的出現。

 

 

同時, 除系統資源不足時,或者手機的螢幕方向變化時,改變語言時,都會導致Activity重現銷毀,然後重現再建立。這時候如果我們不儲存需要儲存的資料,也會出現不對的情況。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.