使用itent.putExtra
复制我的对象。因此,对于活动而言,对此活动进行的更改不会反映其他活动。
在我的情况下会很好地引用这个对象而不是副本,这是可能的吗?
ps:我知道我可以使用onActivityResult
来检索对象的更改,但在我的情况下,对象的更改需要在活动结束之前完成。
答案 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