上篇博文介绍了一下关于unity接入华为sdk的问题,最后发现发布到android机器上横竖屏的切换问题会导致接入华为sdk后付款后退出华为账号进入游戏提示登录,登录后卡死、闪退、黑屏等问题。经过在网上查了一些资料得知,可能是android横竖切换重新加载Activity导致。
然后我就在查了一下关于android横竖屏切换问题。关于横竖屏切换,在unity中 Player setting 中有设置。在Default Orientation设置,我选择了Auto Rotation,并将Portrait、Portrait Upside Down勾掉。只保留Landscape Right、 Landscape Left这个两个。然后发布android进行测试发现问题还是没解决。横竖屏切换的时候还是会出现闪屏、黑屏、卡死等现象。最后我放弃了只通过untiy的设置来达到我想要的效果。我打开android的配置文件。在AndroidManifest.xml中activity节点下添加了andrroid : configChanges = "orientation|keyboardHidden|screenSize"就可以了,因为在上次博文中关于配置了强制设置横屏,这里就不多说了。问题解决了。不过我还是有疑问。为什么横竖屏的切换会导致这个问题的出现呢。
通过查找资料我了解到:在Android开发过程中,会碰到Activity在切换到后台或布局从横屏切换到竖屏,会重新切换Activity会触发一次onCreate方法。而我的鉴定方法就是放到onCreate()方法中。
如果不进行设置Activity的android : configChanges,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。
如果设置Activity的android : configChanges = "orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。
如果设置Activity的android : configChanges = "orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。
还有一个需要注意的地方就是设置Activity的android : configChanges = "orientation|keyboardHidden"在android4.0是无效的,需要加上screenSize才行。因为华为这个sdk要求最低版本需要4.0.所以我集成新的sdk的时候选择的最低版本是4.0.所以在androidManifest.xml中activity节点下添加上andrroid : configChanges = "orientation|keyboardHidden|screenSize",也不要忘了同时添加强制横屏android:screenOrientation=”landscape”。
好了,今天就到这了。对于我这个菜鸟一枚,有些地方写的可能不到位或有错误,大家轻喷多留言,指出我的错误,让我也多学习一下。