[java]
<span style="font-size:12px;"> @Override
public Object onRetainNonConfigurationInstance() {
final List<String> list1 = list;
return list1;
}</span>
Android橫豎屏切換時會觸發onSaveInstanceState,而還原時會產生onRestoreInstanceState,但是Android的Activity類還有一個方法名為onRetainNonConfigurationInstance和getLastNonConfigurationInstance這兩個方法。
我們可以通過 onRetainNonConfigurationInstance 代替 onSaveInstanceState,
[java]
<span style="font-size:12px;">@Override
public Object onRetainNonConfigurationInstance(){
//這裡需要保存的內容,在切換時不是bundle瞭,我們可以直接通過Object來代替
}</span>
在恢復窗口時,我們可以不使用 onRestoreInstanceState,而代替的是 getLastNonConfigurationInstance 方法。我們可以直接在onCreate中使用(隻能再onCreate中使用),比如:
下面是保存list集合類型數據的實例:
然後在onCreate()或取數據的時候寫以下代碼:
[java]
<span style="font-size:12px;"> final Object data = getLastNonConfigurationInstance();
if(data == null){
//如果數據為空,就調用該方法獲取數據
getImage();
}else{
//如果不為空,直接取出數據
final List<String> list = (List<String>) data;
}</span>
這裡提醒大傢,每次Activity橫豎屏切換時onCreate方法都會被觸發。
以上處理,在橫豎屏切換時,就不用重新獲取數據,直接顯示切換之前保存的數據。
作者:huweilong1030