最近再一次开发过程遇到了这样问题:应用比较简单,其中牵扯到在2个不同SDK的页面来回跳转,开发好之后,在studio自带模拟器和手机上测试没有问题,但是在内网演示时候使用了夜神模拟器,通过侧边栏切换了竖屏,

8734b78a1614

微信图片_20200724162012.png

没想到在中演示时候遇到了崩溃,检查发现是Asdk关闭之后在Bsdk的onActivityResult 方法,B页面成员变量丢失。

最终发现有夜神模拟器有横竖屏切换,加上没有保存现场,由于页面都是竖屏,于是选择了最简单的在AndroidManifest 配置了

android:screenOrientation="portrait"

强制竖屏,但是还是在返回过程中 模拟器切换横屏页面一闪而过,debug验证确认。这种情况再正常情况下不会出现,考虑是不是夜神模拟器做了横屏的修改。

解决办法

1.页面做了保存现场,和现场恢复

@Override

public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {

super.onSaveInstanceState(outState, outPersistentState);

outState.putString("merchantid", merchantid);

outState.putSerializable("CsOrderEntity", mCsOrderEntity);

}

……

@Override

protected void onCreate(Bundle savedInstanceState) {

merchantid = savedInstanceState.getString("merchantid");

mCsOrderEntity = (CsOrderEntity) savedInstanceState.getSerializable("CsOrderEntity");

}

2.夜神模拟器在后台直接配置成手机竖屏模式

8734b78a1614

微信图片_202007241637161.png

如果还有其他解决方法,可以讨论一下

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐