編輯:關於Android編程
本節學習Activity的狀態保存與恢復。
先用例子開始:
布局文件主要是實現如下,大家自行編寫

Activity邏輯代碼:
public class FiveActivity extends Activity {
private Button setButton;
private Button getButton;
private EditText editText;
private float value;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.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() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
value = 1.234f;
editText.setText(hello world);
}
});
getButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String string = editText.getText().toString();
Toast.makeText(FiveActivity.this, string+ +value, 0).show();
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
Log.i(FiveActivity, onSaveInstanceState);
super.onSaveInstanceState(outState);
}
}
第一種情況:

當然了,這時候按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 stub
Log.i(FiveActivity, onSaveInstanceState);
outState.putFloat(1234, value);
super.onSaveInstanceState(outState);
}
同時, 除系統資源不足時,或者手機的屏幕方向變化時,改變語言時,都會導致Activity重現銷毀,然後重現再創建。這時候如果我們不保存需要保存的數據,也會出現不對的情況。
Android制作簡單垂直上拉下滑View效果
一、簡介 最近朋友公司需要實現一個垂直上拉下滑的View,該View最初只有一部分顯示在屏幕最下方,上拉那一部分可以將該View全部拉出來並全部顯示在屏幕上,下滑該Vie
gridview多選單選的實現
這篇博客呢主要是寫gridview的多選以及單選的功能,並且獲取選中的值。首先呢,我做一下聲明,這個小程序呢是我借鑒某位大神的部分代碼,按照自己的需求重新編寫了一下。本來
Android事件分發機制---學習筆記
學習到的知識整個事件流向應該是從Activity—->ViewGroup—>View 從上往下調用dispatchTouchEvent
Android中Service服務詳解(二)
本文詳細分析了Android中Service服務。分享給大家供大家參考,具體如下:在前面文章《Android中Service服務詳解(一)》中,我們介紹了服務的啟動和停止