使用intent通过引用传递参数

时间:2012-12-27 13:14:02

标签: android reference

使用itent.putExtra复制我的对象。因此,对于活动而言,对此活动进行的更改不会反映其他活动。

在我的情况下会很好地引用这个对象而不是副本,这是可能的吗?

ps:我知道我可以使用onActivityResult来检索对象的更改,但在我的情况下,对象的更改需要在活动结束之前完成。

3 个答案:

答案 0 :(得分:0)

其他方法是:从activity1设置对公共属性的引用(我正在使用MyApplication)。 activity2知道通过getter找到该引用的位置,它将使用它。决定是否要在activity2中修改属性,完成/每次在activity1中都有引用时。

这种方式也不需要序列化/反序列化对象。 (性能改善)

答案 1 :(得分:0)

您可以在静态成员变量中存储对象的引用,如下所示:

public class Globals {
     public static MyObject myObject;
}

现在,在具有该对象的代码中,您只需:

Globals.myObject = object;

在新活动中,您可以这样:

doSomethingWith(Globals.myObject);

现在,说完了,你需要注意以下几点:

如果您的应用程序几乎在任何时候都在后台,Android可以终止您的进程。当用户返回到您的应用程序时,Android将为您的应用程序创建一个新流程,然后仅重新创建活动堆栈顶部的活动(即:正在显示的活动) )。在这种情况下,新创建的活动将无法通过访问Globals.myObject来获取iobject,因为该进程是新创建的,并且该成员变量为null。

答案 2 :(得分:0)

您应该使用Application类,您可以参考使用getApplicationContext()方法。

从底线开始,创建一个Application类,您可以从App中的任何类引用它,然后您可以引用该类的本地变量。

这是一个很好的问题: Using the Android Application class to persist data