根据我从使用Intents传递数据中学到的东西,当你通过意图将对象O从活动A传递给活动B时,活动B接收对象O的COPY。工作方式是对象O被序列化(转换为字节序列)然后将该字节序列传递给Activity B.然后,活动B在序列化时重新创建对象O的副本。 我想知道如果扩展Intent类来创建自定义Intent并引用其他活动所需的对象并将数据传递给其他活动,是否会有效。例如:
public class CustomIntent extends Intent {
private Object o;
public CustomIntent() {
super();
// TODO Auto-generated constructor stub
}
public Object getObject () {
return o;
}
public void setObject(Object object) {
this.o = object;
}
}
在接收活动中,我获取意图并将意图转换为CustomIntent类型并检索活动所需的对象。这会通过减少序列化的需要来提高效率吗?请注意这一点。提前谢谢。
答案 0 :(得分:0)
没有。意图由Android系统调度,并且始终被序列化,因为它们可以发送到系统中的任何活动,服务等。
对于您的问题,您可以通过创建Application类并将数据存储在其中来解决此问题:
class CustomApplication extends Application {
private Object data;
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
您可以通过更新AndroindManifest.xml来激活它,并在应用程序标记上设置您的类名称的android:name
属性。
在您的活动中使用:
CustomApplication app = (CustomApplication) getApplicationContext();
app.setData(yourDataObject);
答案 1 :(得分:0)
我认为如果你让android为你处理一切会更好。如果不是非常重要,请不要自定义它。
如果您想在另一个活动中引用该对象,那么还有其他方法。
您可以将对象设为静态,并直接从其他活动访问它。
您可以创建一个相同类型的新对象,并在再次返回第一个活动后替换它(在onActivitResult()方法中。)。
或者可能有更多方法可以做到这一点。
感谢。