由于子活动是通过从父活动调用startActivity(intent)创建的,因此可以保证在子活动运行时父对象存在。
从这个角度来看,我可以在孩子的类中操作Parent的公共变量,而不是在回来后调用startActivityForResult()吗?
为什么我们需要使用这种方法?
可以保证在子活动运行时父对象存在。
不,不是。对于初学者来说,startActivityForResult()
可以跨流程边界使用,您正在启动的活动在另一个应用程序中。启动的活动无法访问启动它的活动,因为它们位于不同的流程中。除此之外,原始活动所在的流程可能会在后台终止,因为用户处于第二个活动中—当第二个活动是一个相机应用程序时,这种情况会发生很多,它是响应类似ACTION_IMAGE_CAPTURE
Intent
的东西而启动的。
我能操作父级的公共变量吗
一个活动无法访问另一个活动实例。唯一可能的方法是通过static
对活动的引用,这很难在不引入内存泄漏的情况下正确处理。同样,只有在两项活动都处于同一过程中的情况下,这才有效。
为什么我们需要使用这种方法?
你没有。在安卓系统上有很多编写UI的方法。很少有人需要使用startActivityForResult()
。例如,如果UI的这两个部分紧密耦合,也许它们应该在单个活动中,其中UI的部分是单独的片段。