亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

android: targetSdkVersion升級中Only fullscreen activities can request orientation問題的解決方法

2019-12-12 00:32:15
字體:
來源:轉載
供稿:網友

前言

這幾天同事跟我在升級Android target SDK和build tool版本的時候,碰到了一個非常搞笑的問題,基本可以算作是“坑”了!我在這里跟大家分享一下,希望對您有所幫助。

特征

當我們把targetSdkVersion升級到27,buildToolsVersion和相關的support library升級到27.0.1后,在Android 8.0(API level 26)上,部分Activity出現了一個莫名其妙的crash,異常信息如下:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.linkedin.android.XXXX.XXXX/com.linkedin.android.XXXX.XXXX.activity.LoginActivity}: java.lang.IllegalStateException: Only fullscreen activities can request orientation

當你在一個“translucent”的Activity里,試圖執行setRequestedOrientation的時候就會觸發這個異常。例如:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

原因

這個問題貌似已經被廣泛的討論了,最終我們鎖定了April 26的一個commit:

Prevent non-fullscreen activities from influencing orientation ? aosp-mirror/platform_frameworks_base@3979159

這個改動中拋出異常有關的代碼如下:

if (ActivityInfo.isFixedOrientation(requestedOrientation)  && !fullscreen && appInfo.targetSdkVersion >= O) { throw new IllegalStateException("Only fullscreen activities can request orientation");}

基本的意思是說,“fullscreen”為否的activity是不能鎖定orientation的,否則拋出異常。下面,我們在看一下“fullscreen”如何定義的。

public static boolean isTranslucentOrFloating(TypedArray attributes) {  final boolean isTranslucent = attributes.getBoolean(com.android.internal.R.styleable.Window_windowIsTranslucent, false);  final boolean isSwipeToDismiss = !attributes.hasValue( com.android.internal.R.styleable.Window_windowIsTranslucent)           && attributes.getBoolean( com.android.internal.R.styleable.Window_windowSwipeToDismiss, false);  final boolean isFloating = attributes.getBoolean(com.android.internal.R.styleable.Window_windowIsFloating, false);  return isFloating || isTranslucent || isSwipeToDismiss; }

根據上面的定義,如果一個Activity的Style符合下面三個條件之一,認為不是“fullscreen”:

  • “windowIsTranslucent”為true;
  • “windowIsTranslucent”為false,但“windowSwipeToDismiss”為true;
  • “windowIsFloating“為true;

綜上可見,這個改動的目的是想阻止非全屏的Activity鎖定屏幕旋轉,因為當前Activity是透明的,浮動的或可滑動取消的,是否鎖屏應該由全屏的Activity決定,而不是并沒有全部占據屏幕的Activity決定。

修復

這個問題貌似在最新的SDK中已經修復,我們在API Level 27的設備上已經無法重現,但我們手頭的API Level 26的設備還是能重現。而且根據上面的代碼來看,如果想保留當前Activity的style,“isTranslucentOrFloating”的邏輯根本沒法繞過,所以想繞開很難,目前能想到的大概兩個方向:

  • 推遲SDK升級,等官方修復被大多數設備采用;
  • 升級SDK,但重構一下代碼,看看已有的非“fullscreen” Activity是不是都是必要的,例如用Fragment實現周圍半透明效果,能不能直接把Fragment加入到當前Activity(當然Detach Fragment是有重繪View的開銷的)。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品免费在线视频| 日韩在线欧美在线国产在线| 日韩三级影视基地| 91精品国产自产91精品| 亚洲欧美第一页| 亚洲伊人成综合成人网| 国产精品看片资源| 久久精品夜夜夜夜夜久久| 狠狠躁天天躁日日躁欧美| 国产精品劲爆视频| 国产精品自产拍高潮在线观看| 亚洲精品久久久久中文字幕二区| 国产精品视频播放| 亚洲综合中文字幕在线| 日韩在线中文字幕| 欧美精品在线观看91| 欧美超级乱淫片喷水| 欧美一级电影免费在线观看| 最近的2019中文字幕免费一页| 亚洲第一精品久久忘忧草社区| 国产精品久久久久aaaa九色| 日韩一区二区久久久| 亚洲欧美一区二区激情| 黄色一区二区三区| 欧美诱惑福利视频| 国产成人小视频在线观看| 国产视频精品久久久| 精品久久久免费| 久久乐国产精品| 91精品久久久久久久久久入口| 亚洲a级在线观看| 国产精品视频网址| 精品亚洲国产视频| 欧美精品福利视频| 国产日韩在线视频| 日韩大片免费观看视频播放| 伦理中文字幕亚洲| 日韩av一卡二卡| 日韩av网站电影| 亚洲国产日韩欧美在线图片| 丝袜美腿亚洲一区二区| 欧美黑人视频一区| 国内外成人免费激情在线视频网站| 欧美日韩亚洲天堂| 午夜欧美大片免费观看| 亚洲国产古装精品网站| 国产成+人+综合+亚洲欧洲| 日韩高清欧美高清| 欧美大片va欧美在线播放| 成人伊人精品色xxxx视频| 亚洲欧美中文日韩在线| 亚洲xxxx3d| 国产精品日韩av| 久久久久亚洲精品国产| 欧美高清电影在线看| 国产精品香蕉国产| 欧美三级欧美成人高清www| 亚洲欧洲在线免费| 色综合伊人色综合网| 中文字幕欧美国内| 国产精品稀缺呦系列在线| 久久99久久99精品免观看粉嫩| 久久久久久亚洲精品| 欧美日韩在线观看视频小说| 亚洲最新av在线网站| 欧美在线观看视频| 久久久久久久91| 欧美午夜性色大片在线观看| 国产成人综合av| 精品欧美aⅴ在线网站| 热久久美女精品天天吊色| 91干在线观看| 中文字幕在线国产精品| 成人激情视频在线| 日韩在线观看免费高清完整版| 午夜精品久久久久久久男人的天堂| 欧美电影第一页| 青草成人免费视频| 久久国产精品久久久久| 97av在线视频免费播放| 久久久久久有精品国产| 久久久欧美一区二区| 欧美在线观看日本一区| 国产精品久久久久久久午夜| 77777少妇光屁股久久一区| 国产精品亚洲美女av网站| 成人亚洲综合色就1024| 精品久久久久久久久久久久久| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品白丝av嫩草影院| 欧美成人免费全部观看天天性色| 日韩大片免费观看视频播放| 日韩hd视频在线观看| 中文字幕九色91在线| 疯狂欧美牲乱大交777| 国产一区二区日韩精品欧美精品| 亚洲女同性videos| 亚洲欧洲视频在线| 成人av色在线观看| 久久久精品影院| 蜜臀久久99精品久久久久久宅男| 奇米四色中文综合久久| 欧美视频在线视频| 成人免费大片黄在线播放| 91免费在线视频网站| 中文字幕av一区二区三区谷原希美| 国产成人精品电影| 亚洲精品一区二区三区不| 欧美亚洲国产日韩2020| 2024亚洲男人天堂| 欧美性xxxxx极品| 精品国产视频在线| 狠狠躁夜夜躁人人躁婷婷91| 精品视频—区二区三区免费| 97精品久久久中文字幕免费| 日本韩国欧美精品大片卡二| 国产suv精品一区二区三区88区| 欧美精品在线免费| 欧美黑人性视频| 亚洲精品视频中文字幕| 亚洲成av人片在线观看香蕉| 91嫩草在线视频| 国产精品久久久久久久久久ktv| 亚洲天堂色网站| 欧美性xxxxxx| 亚洲夜晚福利在线观看| 久久久久久久av| 欧美黄色小视频| 欧美电影在线观看| 日韩亚洲第一页| 91网站在线免费观看| 亚洲人成电影网站| 久久精品国产成人精品| 欧美激情一区二区三区高清视频| 2019中文字幕在线免费观看| 亚洲欧洲日本专区| 国产精品69久久久久| 91久久久久久久久久久久久| 26uuu另类亚洲欧美日本老年| 精品欧美国产一区二区三区| 91大神福利视频在线| 欧美国产视频日韩| 午夜精品久久久久久久久久久久| 亚洲激情成人网| 黑人巨大精品欧美一区二区免费| 欧美一级淫片aaaaaaa视频| 欧美激情视频网站| 青草热久免费精品视频| 视频在线观看一区二区| 日韩av色综合| 国产精品久久久av久久久| 91亚洲国产成人久久精品网站| 亚洲www视频| 亚洲最大成人在线| 亚洲一区二区福利| 在线视频欧美日韩精品| 国产精品电影久久久久电影网| 成人免费看吃奶视频网站| 韩国v欧美v日本v亚洲| 日韩在线观看免费av| 欧美最猛黑人xxxx黑人猛叫黄| 日本乱人伦a精品| 91精品国产综合久久香蕉| 国产精品一区av|