在Android活动之间高效传递自定义对象数据[Mono Android]
我已经为此搁置了一段时间了。 我正在开发一款android应用程序,用于存储人员的鱼类捕获量,最喜爱的捕鱼位置,解决方案库存量和其他数据。 我所有的类都是可串行化的,并且可以在迄今为止似乎能够工作的活动之间保存和加载。 但我预测随着越来越多的数据被存储,应用程序将开始运行缓慢。
我基本上要求的是,有什么方法可以在整个应用程序中保留这些数据,所以我不必在每次弹出新的屏幕时加载它。 我已经找到了以下帮助信息,但需要更清楚一点才能理解:
另一个论坛说你可以将它填入Application对象中:
[Application]
public class MyApp : Android.App.Application {
public MyApp(IntPtr handle)
: base (handle)
{
}
public FishingData Data {get; set;}
}
然后在您的活动中:
((MyApp) this.ApplicationContext).Data = value;
所以我从来没有真正听说过这种方法,我不确定这将贯穿整个应用程序过程(我觉得要么通过序列化来加载数据,要么这样,这就是我想要的应用程序待办事项:
第一个活动是主菜单,并且在屏幕加载时必须完成以下操作:
任何帮助将不胜感激。 这听起来似乎弄不清楚。 这似乎是一件很平常的事情,但我一直没有找到任何详细的信息。
您可以使用这种方法,只要您的Application
对象处于活动状态(它意味着它将贯穿整个应用程序和活动) 就会生活。 您可以在这里阅读更多关于使用Application
对象中存储的全局变量的信息。 我不认为单声道会有所作为,这将阻止你使用这种方法。
以下是我如何通过parcelable将应用程序传递给应用程序。 假设你有一个名为Fisherman的类(基本上是一个用户)
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个步骤中的每一步都分解成自己的问题,因为你试图做的事情比一个问题稍长一些
链接地址: http://www.djcxy.com/p/66685.html上一篇: Efficiently Passing Custom Object Data between Android Activities [Mono Android]