2012年1月2日 星期一

[茶包] PhoneGap Android configChanges

當Android 手機的方向被改變的時後,會造成 Activity 被重啟。如此一來 Activity 的狀態會被清空會造成意外中的 bug

這次就是在送資料到 server 時的時間差,變換了手機的方向。造成 activity 被重啟,在接不到資料的狀態之下,程式就  crash 了。

如何設定讓Activity 不會被重啟??

要達到這個目的,要修改 AndroidManifest.xml 在 activity 的tag 中加入設定

   1: <activity android:name=".Activity"
   2:           android:configChanges="orientation|keyboardHidden"
   3:           android:label="@string/app_name">
   4:     <intent-filter>
   5:         <action android:name="android.intent.action.MAIN" />
   6:         <category android:name="android.intent.category.LAUNCHER" />
   7:     </intent-filter>
   8: </activity>

經過這個設定, Activity 就不會被重啟,而改呼叫 onConfigurationChanged 的 Event。


 


另外,也可以固定畫面方向不被改變


可以在 activity 中加入設定,看要使用 landscape 或是  portrait



   1: <activity
   2:       android:screenOrientation=["unspecified" | "user" | "behind" |
   3:                                  "landscape" | "portrait" |
   4:                                  "sensor" | "nosensor"]>
   5: </activity>

[Reference]


Activity 設定檔文件


http://developer.android.com/guide/topics/manifest/activity-element.html

沒有留言: