Android中startActivityForResult遇到的坑

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/xiaoming100001/article/details/81637235

今天下午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进行保存和恢复状态,补充好状态愉快提交测试,搞定下班!!!

猜你喜欢

转载自blog.csdn.net/xiaoming100001/article/details/81637235