1

我在manifest.xml指定了以下標籤即使指定了android:configChanges,應用程序也會重新創建?

<activity android:screenOrientation="fullsensors 
      android:configChanges="orientation|keyboardhidden|keyboard" 
</activity> 

而且android:configChanges="Orientation|keyboardhidden|keyboard"手段避免應用程序的娛樂在「方向」 OR的情況下,「鍵盤被隱藏/可見」

而在我的App類的,我我正在調用所有活動的生命週期回調。我期望當我旋轉/重新定位設備時,不會再發生應用程序的重新創建。或換句話說,下面的回調按順序將不會因爲android:configChanges而被調用。回調是onPause()onStop()onDestroy()onCreate()onStart()onResume()並且每當我旋轉設備,應用程序被重新創建,前面提到的生命週期的回調被調用。

任何解釋爲什麼發生這種情況?

+0

不是不。如果你指定'android:configChanges' onConfigurationChanged被調用。從HoneyComb開始,你還需要'screenSize' – Blackbelt 2014-10-16 10:31:59

+0

@blackbelt謝謝你的回答。如果「android:configChnanges」在方向改變的情況下不阻止App的重新創建,那麼它有什麼用處?關於screenSize,它是回調還是什麼? – LetsamrIt 2014-10-16 10:40:27

回答

1

這裏你沒有包括screenSizeandroid:configChanges

根據文檔

注意:與Android 3.2(API級13)中,「畫面尺寸」 也改變開始時縱向和橫向取向 之間的設備切換。因此,如果要在開發API級別13或更高級別(由minSdkVersion和targetSdkVersion屬性聲明的 )時爲 方向更改而阻止運行時重新啓動,則 除「方向」外還必須包含「screenSize」值爲 。也就是說,你必須decalare android:configChanges =「orientation | screenSize」。但是,如果您的 應用程序的目標級別爲12或更低,則您的活動始終會自行處理此配置更改(即使在更高版本的Android 3.2或更高版本的設備上運行此配置更改 也不會重新啓動您的活動)。

所以,如果你想獲得onConfigurationChanged回調..你必須在android:configChanges添加screenSize

欲瞭解更多信息,你可以看到this

+0

謝謝,現在更清楚了。請問你能提出我的問題嗎? – LetsamrIt 2014-10-16 13:04:58

相關問題