2009/04/03

[Android] 煩人的螢幕旋轉

有在寫Android 程式的都知道 要處理旋轉螢幕是一件很煩人的事情
在使用者打開鍵盤, 也就是螢幕旋轉的時候, 整個App就歷經了一次生死輪迴
要是程式中已經有資料處理, 那歷經了這次生死輪迴之後,
這些資料就會遺失了.
Android 的 API 提供了幾種方式讓Programmer來避免這個狀況的發生

第一種是把這整個程序放到Service 中. 這是算是最好的方法 但也是最複雜的方法
這邊先不提

第二種是把它放到SharedPreferences中, 透過這種方法我們可以放特定的幾種簡單資料形式到系統中 等到下次要onCreate()的時候在把它取出來

第三種是今天想介紹的方式 onRetainNonConfigurationInstance
這個method 會在你Android App 的on stop 與 on destroyed 間回傳資料給系統
在下次App on create 的時候就可以把它拿回來
至於回傳資料的形式呢?
每種變數都行!! 很棒吧..
話不多說 就來程式碼

@Override
public Object onRetainNonConfigurationInstance()
{
return("Hello"); // 基本上這邊你如果想要回傳container也行
}

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String str = (String) getLastNonConfigurationInstance(); //你可以在onCreate這邊把之前回傳的資料取出
}

如此一來就不用擔心螢幕旋轉的時候
你的資料突然之間就消失了

1 則留言:

KuanYu 提到...

@@ 請問一下喔
如果要傳的變數有複數個以上怎麼處理@@?
只能用List嗎?