Xamarin.Forms Droid项目:如何在OnHandleIntent
事件中存储一些数据。我在Application.Current.Properties
尝试保存数据。当应用程序激活/打开时没有问题,但是当应用程序关闭数据时没有保存。任何帮助,将不胜感激。下面是代码示例:
[Service]
public class GCMIntentService : IntentService
{
//other methods
protected async override void OnHandleIntent(Intent intent)
{
//Some code for push notification
Application.Current.Properties.Add("key", "value");
Application.Current.SavePropertiesAsync();
}
}
答案 0 :(得分:0)
Xamarin.Forms Android:在OnHandleIntent事件中保存/存储一些数据
Application.Current.Properties
只是一个对象字典,你可以在那里粘贴任何你想要的东西,包括你自己的类将被序列化,并从文件中读取属性集合,这是自动完成的。
但是,整个字典在文件中被序列化,在读取或反序列化该文件时会出现异常,只留下一个空的Properties集合。
解决方案:
您可以使用SharedPreferences 保存/存储某些数据,正如文档所述:
SharedPreferences类提供了一个通用框架,允许您保存和检索原始数据类型的持久键值对。您可以使用SharedPreferences保存任何原始数据:布尔值,浮点数,整数,长整数和字符串。 此数据将在用户会话中保留(即使您的应用程序被终止)。
在Xamarin.Android
中,您需要获取ISharedPreferences的实例并使用它来更新/更改/删除首选项。正如Tom Opgenorth所述,有两种方法可以获得ISharedPreferences
的实例:
<强> Activity.GetPreferences 强>
会获得特定于该活动的偏好。可能不是你想要的。
<强> Context.GetSharedPreferences 强>
可以获得应用程序级首选项。
<强> PreferenceManager.DefaultSharedPreferences 强>
将为您提供给定上下文的ISharedPreference实例。
实际保存是由ISharedPreferencesEditor
的实例完成的,您可以通过调用方法ISharedPreferencesEditor.Apply()
获得该实例。这是一个例子:
保存您的数据:
ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(this);
ISharedPreferencesEditor editor = prefs.Edit();
editor.PutString("number", "Value");
editor.Apply();
恢复您的数据:
ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(this);
var a = prefs.GetString("number", "null");//"null" is the default value