¿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).

¿Hay alguna manera para que use SharedPreferences para este problema o estoy forzado a usar FileInput / Output?

¿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.) 
  • ¿Cómo utilizar el patrón MVVM de Android con fragmentos?
  • Qué debe hacerse en Activity / Fragment y ViewModel en MVVM
  • Android: ¿debería un adaptador listView ser parte de tu clase ViewModel?
  • Ejemplos de patrones de diseño de Android MVVM
  • AndroidViewModel vs ViewModel
  • Xamarin Forms Navegación de página MasterDetail causando un accidente en android , Funciona en iOS y UWP
  • Desventaja de MVP sobre patrón de diseño MVVM en android
  • Android adaptador de actualización de trabajo después del dispositivo de rotación de nuevo
  • Android incluye diseño dinámico con la biblioteca de enlace de datos
  • Show Dialog de ViewModel en Android MVVM Architecture
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.