在activity中輸入的信息當你再次返回時加入進程被回收,頁面會從新創建,你輸入的文本就不會顯示了,所以,只要咱們重寫onSaveInstanceState參數是一個bundle類型,你能夠給參數添加數據內容,存在此處,由於在oncreat函數中的參數即是此時的bundle類型的數據即savedInstanceState參數,你只要判斷其是否爲空從而取出你須要恢復的數據,進行邏輯處理便可。(onSavedInstanceState()函數要和oncreat中判斷參數一塊兒寫才生效,可是手機比較好一直沒機會測試這個功能,你要是知道怎麼在第二個界面手動回收第一個Activity的進程請告訴我謝謝啊!!!)ide
public class MainActivity extends Activity {函數
public EditText editText;測試
public String a = "lkk";spa
@Override指針
protected void onCreate(Bundle savedInstanceState) {orm
super.onCreate(savedInstanceState);進程
setContentView(R.layout.activity_main);內存
Button button1 = (Button) findViewById(R.id.button1);get
editText = (EditText) findViewById(R.id.editText1);it
TextView textView = (TextView) findViewById(R.id.textView1);
if(savedInstanceState != null){
String temp = savedInstanceState.getString("data");
editText.setText(temp);
a= temp;
textView.setText(a);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
String save = editText.getText().toString();
outState.putString("data", save);
}
}
這裏我把oncreat取得數據不只寫進了EditText還複製給了TextView,可是我一直不能實現內存是回收,因此回頭再測試吧,****
我找到了讓他調用onSaveInstanceState的辦法了,就是手機橫豎屏幕切換時候,
這裏必定要先聲明初始化在賦值,也就是把if放在findViewById方法後邊,要不一直空指針,旋轉屏幕自動退出該activity,看似簡單,我看了半個小時啊。記住啊。
2.activity的啓動模式
默認就是standard。singleTop(只在本身打開本身的時候不會從新生成,就是你在棧頂的時候不會建立你,只會直接讓你繼續顯示而已)。singletask(也就是隻要棧裏面有這個activity,若是發現已經存在則直接使用該實例,並把在這
個活動之上的全部活動通通出棧)。singleInstance中就很特殊了,就是可使得特定的activity本身爲本身生成一個棧堆,
例如,1 2 3三個頁面 1和2是singletask,3是singleInstance,而後1打開2,2打開3,3,打開1.此時我按返回確定是回到3,再按就到桌面了。緣由就是這倆特性致使的。