Xamarin.Forms Android: Save/Store 关于 OnHandleIntent 事件的一些数据
Xamarin.Forms Android: Save/Store some data on OnHandleIntent event
Xamarin.Forms Droid 项目: 如何在 OnHandleIntent
事件上存储一些数据。我正在尝试将数据保存在 Application.Current.Properties
中。应用active/open时没有问题,但应用关闭时数据没有保存。任何帮助,将不胜感激。下面的代码示例:
[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();
}
}
Xamarin.Forms Android: Save/Store some data on OnHandleIntent event
Application.Current.Properties
只是一个对象字典,你可以在其中粘贴任何你想要的东西,包括你自己的 类 ,它将被序列化,属性集合是从文件中读取的,这个是自动完成的。
但是,整个字典在一个文件中一起序列化,读取或反序列化该文件期间的异常将被捕获,只留下一个空的 Properties 集合。
解法:
您可以使用 SharedPreferences 来 Save/Store 一些数据,如文档所述:
The SharedPreferences class provides a general framework that allows you to save and retrieve persistent key-value pairs of primitive data types. You can use SharedPreferences to save any primitive data: booleans, floats, ints, longs, and strings. This data will persist across user sessions (even if your application is killed).
In Xamarin.Android
, You'll need to get the instance of ISharedPreferences and use that to update/change/delete preferences. As Tom Opgenorth said,有几种方法可以获取ISharedPreferences
的实例:
Activity.GetPreferences
会得到特定于 activity 的偏好。可能不是你想要的。
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
Xamarin.Forms Droid 项目: 如何在 OnHandleIntent
事件上存储一些数据。我正在尝试将数据保存在 Application.Current.Properties
中。应用active/open时没有问题,但应用关闭时数据没有保存。任何帮助,将不胜感激。下面的代码示例:
[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();
}
}
Xamarin.Forms Android: Save/Store some data on OnHandleIntent event
Application.Current.Properties
只是一个对象字典,你可以在其中粘贴任何你想要的东西,包括你自己的 类 ,它将被序列化,属性集合是从文件中读取的,这个是自动完成的。
但是,整个字典在一个文件中一起序列化,读取或反序列化该文件期间的异常将被捕获,只留下一个空的 Properties 集合。
解法:
您可以使用 SharedPreferences 来 Save/Store 一些数据,如文档所述:
The SharedPreferences class provides a general framework that allows you to save and retrieve persistent key-value pairs of primitive data types. You can use SharedPreferences to save any primitive data: booleans, floats, ints, longs, and strings. This data will persist across user sessions (even if your application is killed).
In Xamarin.Android
, You'll need to get the instance of ISharedPreferences and use that to update/change/delete preferences. As Tom Opgenorth said,有几种方法可以获取ISharedPreferences
的实例:
Activity.GetPreferences
会得到特定于 activity 的偏好。可能不是你想要的。
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