我在一个程序中有几个活动。可以说,活动A,B和C.
活动A是此上下文中的main activity
。它包含对象X,必须可以访问所有其他活动(活动:B和C)。
活动A将启动活动B,然后B将启动С。之后,活动A和B都在后台,操作系统可以killed
。我应该如何将对象X传递给活动B和C,以确保在A& B被杀死时不会杀死对象X?
答案 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)
有三种可能的方式:
这里提到了其中两个。
通过SharedPreferences。但请记住,SharedPreferences会在关闭应用程序时保留该值。如果您希望该值在您的应用程序中“永久”,这是最佳解决方案。
创建单个对象。如果您想在所有活动中操纵对象但又不想将其保存到其他运行中,这是最佳解决方案。
通过附加功能发送数据。如果您只想要对象的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,依此类推。