我在一个程序中有几个活动。比方说,活动 A、B 和 C。
活动 A 就是main activity
在这种情况下。它包含对象 X,它必须可供所有其他活动(活动:B 和 C)访问。
活动 A 将启动活动 B,然后 B 将启动 С。之后,活动 A 和 B 都在后台,并且可以killed
由操作系统进行。我应该如何将对象 X 传递给活动 B 和 C 以确保对象 X 在 A&B 被杀死时不会被杀死?
我在一个程序中有几个活动。比方说,活动 A、B 和 C。
活动 A 就是main activity
在这种情况下。它包含对象 X,它必须可供所有其他活动(活动:B 和 C)访问。
活动 A 将启动活动 B,然后 B 将启动 С。之后,活动 A 和 B 都在后台,并且可以killed
由操作系统进行。我应该如何将对象 X 传递给活动 B 和 C 以确保对象 X 在 A&B 被杀死时不会被杀死?
为什么你不能用 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;
}
}
尝试中的putExtra()
功能Intent
您只能将其用于原语。
如果你的 X 只包含原语,你可以在 X 中编写一个函数,public Intent fillIntentWithX(Intent intent)
它以意图对象为参数,用 X 中的原语填充意图对象,并返回意图对象。
类似地,在 X 中编写另一个函数,public X getXFromIntent(Intent intent)
它将意图作为参数,提取驻留在其中的原语以形成一个新对象 X,然后返回它。
使用 fillIntentWithX() 用对象 X 的属性填充启动 B 的意图。
使用 getXFromIntent() 在活动 B 中提取 X,依此类推。
最好的方法是在 Shared Preferences 中保存 X 值。即使您的 A 和 B 活动被终止,X 的值也会保留。
检查此链接以了解如何使用共享首选项:
有三种可能的方式:
这里提到了其中两个。
通过 SharedPreferences。但请记住,SharedPreferences 在应用程序关闭时保留该值。如果您希望该值在您的应用程序中“永久”,这是最好的解决方案。
创建一个单例对象。如果您想在所有活动中操作对象但又不想将其保存以供下次运行,这是最好的解决方案。
通过 extras 发送数据。如果您只想要对象的 VALUE 而不想操纵它,这是最好的解决方案。