关于意图

时间:2011-07-01 04:55:28

标签: android

根据我从使用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类型并检索活动所需的对象。这会通过减少序列化的需要来提高效率吗?请注意这一点。提前谢谢。

2 个答案:

答案 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()方法中。)。

或者可能有更多方法可以做到这一点。

感谢。