我一直在用难倒这一段时间。 我正在上存储一个人的渔获量,最喜欢的钓鱼地点的Android应用程序,钓具箱库存等数据。 我所有的类都是可序列化,并且可以保存和活动之间加载这似乎是迄今为止工作。 但是我预测,随着越来越多的数据存储,应用程序将开始运行缓慢。
什么我基本上问的是有没有办法留住整个应用程序这个数据,所以我不必每加载一个新的屏幕上弹出一次。 我已经找到了以下信息来帮助,但它需要一个更加清楚一点,我就明白了:
另一个论坛上说,你可以在应用程序对象东东吧:
[Application]
public class MyApp : Android.App.Application {
public MyApp(IntPtr handle)
: base (handle)
{
}
public FishingData Data {get; set;}
}
然后在你的活动:
((MyApp) this.ApplicationContext).Data = value;
所以,我从来没有真正听说过这样的做法的,我不知道这会度过整个应用程序(我觉得无论哪种方式,将不得不通过序列装载数据。这是我想要的应用程序待办事项:
第一个活动是主菜单,以下必须完成的屏幕加载时:
- 如果找到一个设置文件,使用序列加载以前FishingData对象(我知道如何做到这一点)
- 如果没有,然后创建一个新的清洁FishingData对象后保存(我知道这也)
- 所以,现在我们有一个FishingData对象,我如何确保我不必重复步骤1-2,在每一个活动。 我怎么能以某种方式FishingData对象传递到下一个活动,并确保其生活globaly而应用程序还活着。 我只想一次加载(通过序列化)(< -不知道如何做到这一点),只有当用户将数据添加到该对象(我知道该怎么做)保存。
任何帮助将不胜感激。 这是缠着我我似乎无法想出解决办法。 这似乎是它会做一个平常的事,但我还没有得到任何运气找到任何详细信息。
您可以使用此方法,因为你会为万岁Application
对象是活的(这意味着它会因你的整个应用程序和活动)。 你可以阅读更多有关使用存储在全局变量Application
对象这里 。 我不认为单会有所作为,这将阻止您使用这种方法。
这里是我将通过parcelable绕过App我的数据。 比方说你有一个名为渔夫类(用户基本)
public class Fisherman implements Parcelable {
private String name;
private Tacklebox box;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(name);
out.writeParcelable(box, 0);
}
public static final Parcelable.Creator<Fisherman> CREATOR
= new Parcelable.Creator<Fisherman>() {
public Fisherman createFromParcel(Parcel in) {
return new Fisherman(in);
}
public Fisherman[] newArray(int size) {
return new Fisherman[size];
}
};
private Fisherman(Parcel in) {
name = in.readString();
box = in.readParcelable(com.fisher.Tacklebox);
}
}
在这个例子中,可以定义为parcelable你有每个数据模型。 所以说,你有一个渔夫对象,其中包含一个名为tacklebox另一个对象。 如果你继续窝车型也将确定本作tacklebox,等等。 这样,所有你需要做的传递活动之间的数据
Intent intent = new Intent(this, Activity.class);
intent.putParcelableExtra("com.fisher.Fisherman", fisherman);
和阅读
Bundle b = getIntent().getExtras();
Fisherman fisher = b.getParcelable("com.fisher.Fisherman");
这偏偏回答你的问题的唯一步骤3,但我建议打破你的3个步骤,每一个到它自己的问题,因为你的努力做的是略高于一题多长时间
文章来源: Efficiently Passing Custom Object Data between Android Activities [Mono Android]