在Android活动之间有效传递自定义对象数据[Mono Android]

Tea*_*hot 7 android android-intent xamarin.android android-activity xamarin

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

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

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

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

    public FishingData Data {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

然后在你的活动中:

((MyApp) this.ApplicationContext).Data = value;
Run Code Online (Sandbox Code Playgroud)

所以我以前从来没有真正听说过这种方法,我不确定这将贯穿整个应用程序过程(我觉得它要么必须通过序列化加载数据.这就是我想要的应用程序todo :

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

  1. 如果找到设置文件,请使用序列化加载以前的FishingData对象(我知道如何执行此操作)
  2. 如果没有,那么创建一个新的干净的FishingData对象以便稍后保存(我也知道这个)
  3. 现在我们有了一个FishingData对象,如何确保我不必在每个活动中重复步骤1-2.我怎么能以某种方式将FishingData对象传递给下一个活动,并确保它在应用程序仍然存在时生成全局.我只想加载一次(通过序列化)(< - 不知道如何做)并仅在用户向该对象添加数据时保存它(我知道该怎么做).

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

Jon*_*ong 1

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