为什么我们需要startActivityForResult()方法,而不仅仅是设置Parent的公共变量?



由于子活动是通过从父活动调用startActivity(intent)创建的,因此可以保证在子活动运行时父对象存在。

从这个角度来看,我可以在孩子的类中操作Parent的公共变量,而不是在回来后调用startActivityForResult()吗?

为什么我们需要使用这种方法?

可以保证在子活动运行时父对象存在。

不,不是。对于初学者来说,startActivityForResult()可以跨流程边界使用,您正在启动的活动在另一个应用程序中。启动的活动无法访问启动它的活动,因为它们位于不同的流程中。除此之外,原始活动所在的流程可能会在后台终止,因为用户处于第二个活动中—当第二个活动是一个相机应用程序时,这种情况会发生很多,它是响应类似ACTION_IMAGE_CAPTURE Intent的东西而启动的。

我能操作父级的公共变量吗

一个活动无法访问另一个活动实例。唯一可能的方法是通过static对活动的引用,这很难在不引入内存泄漏的情况下正确处理。同样,只有在两项活动都处于同一过程中的情况下,这才有效。

为什么我们需要使用这种方法?

你没有。在安卓系统上有很多编写UI的方法。很少有人需要使用startActivityForResult()。例如,如果UI的这两个部分紧密耦合,也许它们应该在单个活动中,其中UI的部分是单独的片段。

相关内容

最新更新