请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

我有点不太明白为什么OnResultListener会持有旧Activity的引用

既然旧Activity都被销毁了,他的onActivityResult还会被调用吗?
新Activity被恢复后,回调的不是新Activity的onActivityResult方法吗?
感谢解答

正在回答 回答被采纳积分+3

1回答

提问者 慕田峪2868672 2019-09-24 22:28:57

知道了,茅塞顿开。因为匿名内部类在最开始创建的时候持有了旧Activity的引用。所以当Activity重建的时候恢复数据,就原原本本的把带有旧Activity引用的匿名内部类一起带到了新Activity当中。我们通过Fragment获取新Activity的引用更新下匿名内部类的Activity引用就可以了。

1 回复 有任何疑惑可以回复我~
  • 嗯,旧的被销毁了以后onActivityResult不会被调用,调用的是新的Activity的。调用的时候,我们获取到我们刚刚设置的回调进行调用,也就是我们创建的匿名内部类,它持有的引用一开始其实是旧 Activity的引用,我们在回调调用前来一手狸猫换太子,换成新 Activity 的引用,问题就解决了。
    回复 有任何疑惑可以回复我~ 2019-09-24 22:42:56
  • 不太理解“Activity重建的时候恢复数据,就原原本本的把带有旧Activity引用的匿名内部类一起带到了新Activity当中”这句话,意思是当新Activity创建的时候,匿名内部类中的引用会指向新的Activity么?
    回复 有任何疑惑可以回复我~ 2021-07-24 14:00:36
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信