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

时间:2015-11-06 14:23:42

标签: android android-intent android-activity

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

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

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

1 个答案:

答案 0 :(得分:3)

  

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

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

  

我可以操纵Parent的公共变量

一项活动无法访问其他活动实例。唯一可能的方法是通过static对活动的引用,这些方法在不引入内存泄漏的情况下很难实现。而且,这只会在两个活动处于同一过程中时才有效。

  

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

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