android活动传递类对象,在Android活动之间有效传递自定义对象数据

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

我基本上要问的是有没有办法在整个应用程序中保留这些数据,所以每次popup一个新屏幕时我都不必加载它。 我已经find了以下信息来帮助,但需要让我更清楚一点:

另一个论坛说你可以在Application对象中填充它:

[Application] public class MyApp : Android.App.Application { public MyApp(IntPtr handle) : base (handle) { } public FishingData Data {get; set;} }

然后在你的活动中:

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

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

第一个活动是主菜单,并且在加载屏幕时必须执行以下操作:

如果find设置文件,请使用序列化加载以前的FishingData对象(我知道如何执行此操作)

如果没有,那么创建一个新的干净的FishingData对象以便以后保存(我也知道这个)

现在我们有了一个FishingData对象,如何确保我不必在每个活动中重复步骤1-2。 我怎么能以某种方式将FishingData对象传递给下一个活动,并确保它在应用程序仍然存在时生成全局。 我只想加载一次(通过序列化) (< – 不知道如何做到这一点)并仅在用户向该对象添加数据时保存它(我知道该怎么做)。

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

您可以使用此方法,只要您的Application对象处于活动状态,它就会存在(这意味着它将贯穿整个应用程序和活动)。 您可以在此处阅读有关使用存储在Application对象中的全局variables的更多信息。 我不认为单声道会产生影响,这会阻止你使用这种方法。

以下是我将如何通过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.CreatorCREATOR = new Parcelable.Creator() { 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个步骤中的每个步骤分解为自己的问题,因为你试图做的事情比一个问题稍长一些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值