使用此Json.NET component 序列化数组
这是一个序列化和反序列化数组的简单示例
using Newtonsoft.Json;
...
public class Person
{
public string Name { get; set; }
public DateTime Birthday { get; set; }
}
void PersonToJsonToPersonExample ()
{
var person = new Person { Name = "Bob", Birthday = new DateTime (1987, 2, 2) };
var json = JsonConvert.SerializeObject (person);
Console.WriteLine ("JSON representation of person: {0}", json);
var person2 = JsonConvert.DeserializeObject<Person> (json);
Console.WriteLine ("{0} - {1}", person2.Name, person2.Birthday);
}
您还可以使用 Application 类来全局存储对象并检索它们:
using Android.Runtime;
namespace SomeName
{
[Application]
public class App : Application
{
public string Name { get; set;}
public App (IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
{
}
public override void OnCreate ()
{
base.OnCreate ();
Name = "";
}
}
}
您可以通过以下方式访问数据:
App application = (App)Application.Context;
application.Name = "something";
我选择在 Application calss 上执行此操作,因为此类在 App 启动时调用,因此您不必手动启动它。
请记住,作用域为Application 的变量的生命周期通过扩展作用于应用程序。
如果 Android 认为有必要,此类将被 Garbage Collected,因此您必须修改代码以包含此案例。
您可以使用SharedPreferences 或Database 来保存您的变量,以防它们被删除并从 App 类中检索它们以获得更快的结果。
不过,在使用这种方法时不要过度浪费,因为在这个类上附加太多信息会导致性能下降。仅添加您知道应用程序的不同部分需要的信息,并且检索该信息的成本超过将其存储为应用程序变量的成本。
调查您需要将哪些信息保存为应用程序范围的状态,以及哪些信息可以直接从您的数据库中检索。两者都存在成本问题,您需要确保取得正确的平衡。
别忘了在OnStop 和OnDestroy 上根据需要释放资源。