2012-10-23 35 views

回答

8

它不只是onCreate()。當屏幕旋轉時,活動暫停,停止並重新啓動。看到這個問題的更多信息: Activity lifecycle - onCreate called on every re-orientation

如果問題是「爲什麼會發生這種情況?答案與Android的活動和窗口內部的功能有關。更具體地說,當前的方向改變時,android目前沒有辦法移動,調整大小和重新佈局每個視圖。爲了使這種情況成爲可能,實施了簡單的實施方式,即將活動拆除並將其恢復到不同的方向。

+0

謝謝你的答案值。 Offtopic問題:當屏幕方向更改時,如何在活動之間發送或保存數據?並且存在一個轉折,它不能存儲在數據庫或文件中,因爲它具有敏感數據。 –

+0

@ jM2.me看到這個問題,並隨時發佈一個新的問題,如果你有一個新的具體問題http://stackoverflow.com/questions/151777/saving-activity-state-in-android – spatulamania

2

當方向更改時,onDistroy方法將調用哪個指示Activity已關閉,並且再次創建具有新高度和寬度的新活動。

當方向更改時,Activity類中的所有對象都將銷燬,當Activity重新啓動時,它們將再次創建,如果存在大量數據,則需要更多時間再次加載所有數據。並存儲在NonActivity類中的所有數據,並通過創建對象NonActivity類Activity類使用..

時的取向變化的onSaveInstanceState方法也稱爲並
使用的onSaveInstanceState數據將設置或存儲時的某些值活動銷燬並重新創建

protected void onSaveInstanceState(Bundle icicle) { 
     super.onSaveInstanceState(icicle); 
     icicle.putLong("param", value); 

    } 

活動時,重新開始上創建方法調用,這一次的包返回你的onSaveInstanceState中保存

public void onCreate(Bundle icicle) { 
    if (icicle != null){ 
    value = icicle.getLong("param"); 
    } 
} 
+0

所以與onSaveInstanceState我可以傳遞給由於旋轉而創建的新Activity?我可以使用onSaveInstanceState將舊活動的列表傳遞給新的列表嗎? –

+0

在將值添加到Bundle之前,您必須調用super.onSaveInstanceState(bundle)方法。 – goetzc

相關問題