Android - 在活动之间传递对象

时间:2014-10-13 17:37:11

标签: android android-intent android-activity

我知道如果我想从Activity AActivity B发送自定义对象O,我必须使对象O实现Parcelable. 但是,目前我的对象O有很多种类型的字段。 在这种情况下,我可以使用单身人士吗? 例如,

1. in Activity B, I create a public static Object o;

2. in Activity A, I do
B.o = ObjectToSend;
startActivity(intent for B);

3. in Activity B's onCreate(), I do
O o = B.o;
if o is not null, use o..

这种方法有问题吗? 谢谢

3 个答案:

答案 0 :(得分:1)

你可以让它可序列化吗? (如果是这样,请查看此问题以获取示例:Pass serializable object throught intent

如果你真的想采用“静态”方法,我会考虑使用Application的子类,它更专门用于处理应用程序状态,这是你试图传递的。如果是这样,谷歌“Android自定义应用程序类”,你会得到一些非常好的博客和关于使用它的帖子。

关于Parcelable vs Serializable

的一个体面的说明

答案 1 :(得分:1)

假设没有其他线程可以改变这些变量,它将以这种方式工作,但将Singleton分离到它自己的类中通常更常见(例如)

public class ObjectSingleton{
    private static ... someobject;

    //getters and setters

}

因此,围绕它包装线程安全代码更容易。

答案 2 :(得分:0)

您可以继承自己的Application类,并使您的对象成为该类的字段。只要您的程序正在运行,您的Application子类就会存在,因此您的对象将始终存在。