如何在活动之间保留数据

时间:2013-05-17 10:09:06

标签: android

我在一个程序中有几个活动。可以说,活动A,B和C.

活动A是此上下文中的main activity。它包含对象X,必须可以访问所有其他活动(活动:B和C)。

活动A将启动活动B,然后B将启动С。之后,活动A和B都在后台,操作系统可以killed。我应该如何将对象X传递给活动B和C,以确保在A& B被杀死时不会杀死对象X?

4 个答案:

答案 0 :(得分:1)

为什么不用SingleTon创建X对象?只要你愿意,你就可以让它保持活着,你可以从任何你想要的地方获得相同的实例。

public class TestObject {

private static TestObject testObjectInstance;

/* put you data here */

   private TestObject() {

   }

   public TestObject getTestObjectInstance() {

       if (testObjectInstance != null) {

           return testObjectInstance;

       } else {

           testObjectInstance = new TestObject();
           return testObjectInstance;
       }
   }

    public TestObject createNewTestObjectInstance() {

       testObjectInstance = new TestObject();

       return testObjectInstance;
    }
}

答案 1 :(得分:0)

最好的方法是在共享首选项中保存X值。即使您的A和B活动被杀死,X的值也会保留。

检查此链接以了解如何使用共享首选项:

How to use SharedPreferences in Android to store, fetch and edit values

答案 2 :(得分:0)

有三种可能的方式:

这里提到了其中两个。

  1. 通过SharedPreferences。但请记住,SharedPreferences会在关闭应用程序时保留该值。如果您希望该值在您的应用程序中“永久”,这是最佳解决方案。

  2. 创建单个对象。如果您想在所有活动中操纵对象但又不想将其保存到其他运行中,这是最佳解决方案。

  3. 通过附加功能发送数据。如果您只想要对象的VALUE并且不想操纵它,那么这是最好的解决方案。

答案 3 :(得分:0)

尝试putExtra()中的Intent功能 您只能将它用于基元。

如果你的X只包含基元,你可以在X中编写一个函数,public Intent fillIntentWithX(Intent intent)将intent对象作为参数,并用X中的基元填充intent对象,并返回intent对象。 / p>

类似地,在X中编写另一个函数,public X getXFromIntent(Intent intent)将一个intent作为参数,提取驻留在其中的原语以形成一个新的对象X,然后返回它。

  • 使用fillIntentWithX()来填充意图,该意图启动B,使用 对象X的属性。

  • 使用getXFromIntent()将X提取出来 活动B,依此类推。