gpt4 book ai didi

android - 在 Android Activity 之间高效地传递自定义对象数据 [Mono Android]

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:03 26 4
gpt4 key购买 nike

我已经被这个难住了一段时间了。我正在开发一个 Android 应用程序,可以存储一个人的鱼获量、最喜欢的钓鱼地点、渔具箱库存和其他数据。我所有的类都是可序列化的,并且可以在到目前为止似乎有效的 Activity 之间保存和加载。但我预测,随着存储的数据越来越多,应用程序将开始运行缓慢。

我基本上想问的是,有没有什么方法可以在整个应用程序中保留这些数据,这样我就不必在每次弹出新屏幕时都加载它。我已经找到以下信息来提供帮助,但我需要更清楚地理解这些信息:

另一个论坛说你可以把它塞进 Application 对象中:

[Application]
public class MyApp : Android.App.Application {
public MyApp(IntPtr handle)
: base (handle)
{
}

public FishingData Data {get; set;}
}

然后在您的 Activity 中:

((MyApp) this.ApplicationContext).Data = value;

所以我以前从未真正听说过这种方法,我不确定这是否会贯穿整个应用程序过程(我觉得无论哪种方式都必须通过序列化加载数据。这就是我想要的应用待办事项:

第一个 Activity 是主菜单,屏幕加载时必须完成以下操作:

  1. 如果找到设置文件,则使用序列化加载以前的 FishingData 对象(我知道该怎么做)
  2. 如果没有,则创建一个新的干净的 FishingData 对象以备后用(我也知道这一点)
  3. 现在我们有了 FishingData 对象,我如何确保不必在每个 Activity 中重复步骤 1-2。我怎样才能以某种方式将 FishingData 对象传递给下一个 Activity ,并确保它在应用程序仍然存在时在全局范围内存在。 我只想加载它一次(通过序列化)(<--不知道该怎么做)并且仅当用户向该对象添加数据时才保存它(我知道该怎么做).

任何帮助将不胜感激。这让我很烦恼,我似乎无法弄清楚。这似乎是一件很常见的事情,但我没有找到任何详细信息。

最佳答案

以下是我如何通过 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 定义它,依此类推。这样,在 Activity 之间传递数据所需要做的就是

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 个步骤中的每一个都分解成自己的问题,因为您尝试做的事情比一个问题稍微长一些

关于android - 在 Android Activity 之间高效地传递自定义对象数据 [Mono Android],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13633092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com