升级sdk是发现,当sdk升级到29时,设置了透明主题的Activity会崩溃的问题,经查正发现是在sdk大于等于27之后,透明主题的Activity如果设置了强制横竖屏就会崩溃,网上搜索发现,透明的Activity的方向会默认继承其上一层页面的方向。
现已查明,此为Android 8.0.0和Android 8.1.0的bug(Android 9以上版本已修改)。
如何产生此bug ?举例如下:
比如对Activity设置了主题:android:theme="@android:style/Theme.Translucent.NoTitleBar"
又设置了固定方向:android:screenOrientation="portrait"
或者在代码中设置的固定方向:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
此时,就会报crash :
java.lang.IllegalStateException:Only fullscreen activities can request orientation
解决方案:
第一种:让主题透明Translucent和Activity固定方向不要同时存在。
第二种:设置targetSdk <27
网友评论