android xamarin xamarin.android

¿Cómo uso SharedPreferences en Xamarin.Android?



(4)

Quiero guardar y recuperar algunas configuraciones de aplicaciones en mi proyecto Xamarin.Android.

Sé que en Android (java), uso la clase SharedPreferences para almacenar esta información, pero no sé cómo convertir eso a Xamarin C #.

Cuando escribo "SharedPreferences" en el IDE de Xamarin Studio, no hay autocompletado, así que no sé qué usar.

Una búsqueda inicial de interwebs me llevó a una pregunta relacionada, pero solo contiene Android java:

Entonces para resumir:

  • ¿Cuál es el equivalente de Xamarin Android C # de las SharedPreferences de Android Java?

El equivalente Xamarin.Android de SharedPreferences es una interfaz llamada ISharedPreferences .

Úselo de la misma manera, y podrá transferir fácilmente el código de Android.

Por ejemplo, para guardar un bool verdadero / falso usando algún Context , puede hacer lo siguiente:

ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences (mContext); ISharedPreferencesEditor editor = prefs.Edit (); editor.PutBoolean ("key_for_my_bool_value", mBool); // editor.Commit(); // applies changes synchronously on older APIs editor.Apply(); // applies changes asynchronously on newer APIs

Acceda a los valores guardados usando:

ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences (mContext); mBool = prefs.GetBoolean ("key_for_my_bool_value", <default value>); mInt = prefs.GetInt ("key_for_my_int_value", <default value>); mString = prefs.GetString ("key_for_my_string_value", <default value>);

De esta muestra, puede ver que una vez que conoce la interfaz correcta de C # para usar, el resto es fácil. Hay muchos ejemplos de Android de Java sobre cómo usar las SharedPreferences para situaciones más complejas, y estos pueden ser portados muy fácilmente usando ISharedPreferences .

Para obtener más información, lea este hilo:


No estoy seguro si aún no lo sabe o no, pero asegúrese de descartar las variables si están dentro de una función:

prefs.Dispose(); prefEditor.Dispose();

Tuve un bloqueo / congelamiento en mi aplicación durante un tiempo debido a que no eliminó la memoria cuando ya no la necesitaba.


Puede usar este ejemplo para sus SharedPreferences en Xamarin.Android

Primero, necesitas usar:

ISharedPreferences //Interface for accessing and modifying preference data ISharedPreferencesEditor // Interface used for modifying values in a ISharedPreferences

Puedes crear una clase similar

public class AppPreferences { private ISharedPreferences mSharedPrefs; private ISharedPreferencesEditor mPrefsEditor; private Context mContext; private static String PREFERENCE_ACCESS_KEY = "PREFERENCE_ACCESS_KEY"; public AppPreferences (Context context) { this.mContext = context; mSharedPrefs = PreferenceManager.GetDefaultSharedPreferences(mContext); mPrefsEditor = mSharedPrefs.Edit (); } public void saveAccessKey(string key){ mPrefsEditor.PutString(PREFERENCE_ACCESS_KEY, key); mPrefsEditor.Commit(); } public string getAccessKey(){ return mSharedPrefs.GetString(PREFERENCE_ACCESS_KEY, ""); } }

De la actividad.

Context mContext = Android.App.Application.Context; AppPreferences ap = new AppPreferences (mContext);

Si quieres guardar algún valor:

string key = "123123"; ap.saveAccessKey (key);

Si quieres obtener el valor

string key = ap.getAccessKey();

Espero que este ejemplo te ayude


Tuve problemas para usar PreferenceManager como muestra el ejemplo. Añadí este código en la parte superior y ahora estoy bien usándolo.

using Android.Preferences;

Además de obtener las preferencias, debe agregar el valor predeterminado como un segundo parámetro o no compilará

mInt = prefs.GetInt ("key_for_my_int_value", defaultInt);