Android中startActivityForResult遇到的坑

本文描述了一个关于Android应用中Activity状态丢失的问题。当使用startActivityForResult从Activity A跳转到Activity B并返回时,Activity A的状态被重置,原因是开启了手机设置中的不保留活动选项,导致Activity A在后台被销毁。文章强调了在此情况下保存状态的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天下午5点收到一个紧急bug,项目某个页面需要选择国家信息然后返回在原来的页面,bug描述:用户填好当前页面的信息,跳转其他页面选择国家信息的时候再返回来,这回所有的用户填写的信息都被重置了???

一看就感觉不对劲,排除了半个小时,发现当前页面调用startActivityForResult跳转到国家选择页面,当前的activity会调用onDestroy()方法,选择国家页面回到用户填写信息页面重新执行onCreate()方法,清晰点描述是Activity A调用startActivityForResult跳转到Activity B,A调用onDestroy(),B 执行finish返回A,A重新执行onCreate(),再回调onActivityResult()

这很不可思议吧,非常不科学,startActivityForResult是不会结束当前页面的,除非写了finish方法,原因是因为测试的骚操作,开启手机设置中不保留页面活动这个操作,当activity不在前台就会被系统回收,所以A执行onDestroy()方法,当B返回值的时候A先执行onCreate()方法,然后在接收onActivityResult()传回来的值。

讲道理,也不是测试的锅,关于需要给用户填写的信息表单确实要考虑做保存状态,这才是比较友好的操作,不知道哪个煞笔懒得写savedInstanceState()、onRestoreInstanceState进行保存和恢复状态,补充好状态愉快提交测试,搞定下班!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值