android轉屏,切換螢幕,橫豎屏(onConfigurationChanged)會重新 OnCreate 的解決方案
android:configChanges="keyboardHidden|orientation"屬性,轉屏的時候就會不再重新呼叫OnCreate()函式,而是呼叫onConfigurationChanged()。
但是在自從android3.2以後,再這樣設定的話,會發現轉屏後仍然會呼叫OnCreate(),而不是onConfigurationChanged();跟蹤framework層程式碼,就會發現問題所在,是由於google在android3.2中新增了screensize改變的通知,在轉屏的時候,不僅是orientation發生了改變,screensize同樣也發生了改變,而在判斷是呼叫onConfigurationChanged還是OnCreate時,採用的是如下判斷:
int diff = activity.mCurrentConfig.diff(config);
if (diff != 0) {
// If this activity doesn't handle any of the config changes then don't bother calling onConfigurationChanged as we'regoing to destroy it.
if ((~activity.mActivityInfo.getRealConfigChanged() & diff) == 0) {
shouldChangeConfig = true;
}
}
public int getRealConfigChanged() {
return applicationInfo.targetSdkVersion < android.os.Build.VERSION_CODES.HONEYCOMB_MR2 ? (configChanges | ActivityInfo.CONFIG_SCREEN_SIZE
| ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE) : configChanges;
}
通過上面的分析,可發現有兩種方法解決該問題:(只需要修改AndroidManifest.xml)
1.指定android:configChanges="keyboardHidden|orientation|screenSize",其他的程式碼和以前的程式碼一樣處理;
2.在AndroidManifest.xml中指定targetSdkVersion為3.2以前的版本(3.2的版本號為13),系統會自動加上screenSize屬性值。
比如:<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="12" />
建議使用第一種方法。
相關文章
- Swift橫豎屏切換、自動旋轉螢幕、手動旋轉螢幕、鎖定當前螢幕禁止轉屏、橫豎屏頁面跳轉過度、橫豎屏UI適配SwiftUI
- [iOS]終極橫豎屏切換解決方案iOS
- Android橫豎屏切換Android
- 橫屏和豎屏切換介面不重新整理
- iOS 橫豎屏切換iOS
- [貝聊科技] iOS 終極橫豎屏切換解決方案iOS
- dialog橫豎屏切換時消失的解決方法
- Activity橫豎屏切換生命週期
- Android在橫豎屏切換時到底發生了什麼?Android
- 你還在問android橫豎屏切換的生命週期?Android
- activity橫屏豎屏
- 40 橫豎屏切換略縮圖不能定位
- 直播系統搭建,判斷螢幕橫豎屏狀態
- Android系統橫豎屏切換時候Activity的生命週期Android
- android-Fragment橫豎屏翻轉對重新載入的要求AndroidFragment
- 直播電商平臺開發,橫豎屏切換的方法
- iOS橫豎屏iOS
- 橫豎屏切換中的介面設計與體驗提升
- 投屏成功後,手機橫屏切豎屏小窗畫面向右偏移
- 檢測橫屏豎屏程式碼
- 電腦螢幕橫過來了怎麼恢復 電腦螢幕橫屏了怎麼轉換
- iOS 橫豎屏旋轉總結iOS
- 程式碼處理 iOS 的橫豎屏旋轉iOS
- App中橫豎屏的設定APP
- Android 橫豎屏處理的知識小結Android
- 匹配橫屏或者豎屏css程式碼例項CSS
- win10電腦螢幕橫過來了怎麼復原_win10螢幕橫屏了怎麼轉換回來Win10
- Android 拍攝(橫 豎屏)視訊的懶人之路Android
- Android 拍攝(橫 \ 豎屏)視訊的懶人之路Android
- Flutter 特定頁面切換螢幕方向/iOS強制橫屏/SystemChrome.setPreferredOrientations不起作用 看這裡!FlutteriOSChrome
- Android開發之平板和橫豎屏適配-RecyclerViewAndroidView
- js監聽手機橫豎屏事件JS事件
- 解決切換Fragment的黑色閃屏問題Fragment
- perl橫豎轉換
- 短視訊開發app,Android 強制應用全域性橫屏或豎屏APPAndroid
- iOS螢幕旋轉解決方案iOS
- 騰訊會議橫屏如何設定?騰訊會議橫屏設定方法
- 多螢幕切換