隐式跳转遇到的坑

隐式跳转遇到的坑

问题描述

有这样一个需求
页面A中根据操作获得到一个值a,把a作为参数传入列表页面B并获取列表数据。点击列表进入相册页面C,并在该页面通过跨应用(系统相机、相册)添加图片。

实现时,我把a存入一个静态类,并在B中通过这个静态类获取该变量(别问为啥),在每次返回A页面时将a置空(onResume)。当在C中进行两侧跨应用跳转(比如调用系统相机)后,程序崩溃了

然后我也崩溃了,因为日志里说是a在B页面中报空指针了。而此时B页面甚至不可见。

问题分析

通过打印log,我发现在跳转相机后,会调用到onSaveInstanceState方法,众所周知该方法为页面在意外销毁时用于恢复的方法。这说明在跳转的时候由于什么原因导致当前页面被杀死了,再通过打印onResume,我发现当第二次跳转相机时,应用会莫名其妙的顺着整个返回栈通走一遍,没有走onRestoreState,却走进了onResume!于是当走到A的onResume时,a被置空了。于是在B页面中导致空指针

问题解决

不再置空a,就可以了,之后确实也没再发生此类事情。不过我依旧不解,为什么不可见的页面的onResume会被触发。如果有大佬能告知就太棒了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值