原由:
如把targetsdkversion調成26以上,并且Activity主題設為透明,而又指定了activity屏幕的方向的話,在Android8.0的手機上會直接拋出RunRuntimeException異常,并且打印的錯誤信息里面會有這段話:"Only fullscreen opaque activities can request orientation "
安卓8.0版本時為了支持全面屏,增加了一個限制:如果是透明的Activity,則不能固定它的方向,因為它的方向其實是依賴其父Activity的(因為透明)。然而這個bug只有在8.0中有,8.1中已經修復。
具體crash有兩種:
1、如果Activity的主題為透明,在manifest文件中指定了一個方向,則在onCreate中crash
2、如果Activity的主題為透明,調用setRequestedOrientation方法,則crash
解決:
方案1、targetsdkversion降低到26及以下
方案2、對項目中的activity做一次篩查,避免指定透明主題的activity同時又指定了方向