1

我在一个程序中有几个活动。比方说,活动 A、B 和 C。

活动 A 就是main activity在这种情况下。它包含对象 X,它必须可供所有其他活动(活动:B 和 C)访问。

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

4

4 回答 4

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;
    }
}
于 2013-05-17T12:39:41.517 回答
0

尝试中的putExtra()功能Intent 您只能将其用于原语。

如果你的 X 只包含原语,你可以在 X 中编写一个函数,public Intent fillIntentWithX(Intent intent)它以意图对象为参数,用 X 中的原语填充意图对象,并返回意图对象。

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

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

  • 使用 getXFromIntent() 在活动 B 中提取 X,依此类推。

于 2013-05-17T13:24:19.657 回答
0

最好的方法是在 Shared Preferences 中保存 X 值。即使您的 A 和 B 活动被终止,X 的值也会保留。

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

如何在 Android 中使用 SharedPreferences 来存储、获取和编辑值

于 2013-05-17T13:11:24.413 回答
0

有三种可能的方式:

这里提到了其中两个。

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

  2. 创建一个单例对象。如果您想在所有活动中操作对象但又不想将其保存以供下次运行,这是最好的解决方案。

  3. 通过 extras 发送数据。如果您只想要对象的 VALUE 而不想操纵它,这是最好的解决方案。

于 2013-05-17T13:17:24.313 回答