¿Cómo puedo utilizar sharedPreferences fuera de una actividad?
He estado atrapado en este problema muy simple durante horas y he sido incapaz de encontrar ninguna solución adecuada a través de google.
Estoy intentando utilizar la clase SharedPreferences en la capa de modelo de mi aplicación. En concreto, quiero ser capaz de guardar o recuperar el nombre de usuario y el token correspondiente cada vez que se inicia la aplicación (si el usuario establece la aplicación para el inicio de sesión automático que es).
- ¿Debería usar los componentes de arquitectura de Google?
- RoboBinding vs Android vinculante para MVVM
- ¿Cómo implemento eficazmente el patrón de diseño de MVVM para mi aplicación de Android, que también facilitará la escritura de casos de prueba?
- Cómo configurar el error en EditText utilizando DataBinding MVMF de Framwork
- Realización de Interactors con Android MVP Clean Architecture
¿Hay alguna manera para que use SharedPreferences para este problema o estoy forzado a usar FileInput / Output?
- Patrón de diseño de Android MVVM
- MVVM: Cómo Concat la cadena en clase de modelo?
- Arquitectura de la aplicación de Android - MVVM o MVC?
- Enlace de datos de Android layout_width y layout_height
- Práctica recomendada para Android MVVM startActivity
- Implementación adecuada de MVVM en Android
- Android ViewModel no tiene constructor de argumento cero
- Enlaces de datos y animación de Android
¿Dónde instanciar su clase Model?
Simplemente pasa un contexto o SharedPreferences al constructor:
public class Model { private final Context context; private final SharedPreferences sharedPrefs; public Model(Context context) { this.context = context; sharedPrefs = context.getSharedPreferences("name", 0); } private String doSomething(){ return sharedPrefs.getString("key", "defValue"); } }
SharedPreferences
no se llama sólo desde Activity
, sino desde Context
(que Activity
extiende) para que también pueda utilizar el contexto de la aplicación.
Puede utilizar SharedPrederences de cualquier código que contenga un Contexto. Desde la documentación de la actividad en http://developer.android.com/reference/android/app/Activity.html :
Activity persistent state is managed with the method getPreferences(int), allowing you to retrieve and modify a set of name/value pairs associated with the activity. To use preferences that are shared across multiple application components (activities, receivers, services, providers), you can use the underlying Context.getSharedPreferences() method to retrieve a preferences object stored under a specific name. (Note that it is not possible to share settings data across application packages -- for that you will need a content provider.)