原由:
如把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同时又指定了方向
网友评论