“A”使用startActivityForResult()来产生“B”,即它等待“B”.现在,假设“B”在前景中. Android系统可以破坏活动“A”而不会破坏“B”吗? (如果是,那么当“B”完成时,例如在用户输入之后,必须重新创建活动“A”并由Android系统再次放到前台,我需要记住并将“A”恢复到其早期的UI状态. )
请注意,我不是在讨论进程终止(这是不同的情况:如果进程被终止,所有活动都被终止,并且onDestroy()未被调用或无法保证被调用).问题仅仅是在等待子活动的结果时是否可以使用onDestroy().
解决方法:
如果活动A在B完成时被杀死,则可以保证
> A将重新创建.
> A将提供结果.
换句话说,A将在用户下次访问/需要时重新创建,并且此时将传递任何待处理结果(从B到A).
另请注意,这就是为什么必须通过带有整数请求代码的单个Activity回调而不是任意回调对象返回结果的原因.