¿Puedo obtener datos de preferencias compartidas dentro de un servicio?

Estoy desarrollando una aplicación para Android. Estoy usando android 2.2

En mi aplicación estoy captando datos GPS y enviarlo al servicio con el intervalo de tiempo de 1 hora. Si el usuario sale de la aplicación también funciona (es necesario).

Estoy utilizando 2 servicios (definido por el usuario), uno para la captura de datos GPS y otros para el envío al servidor.

Aquí mi duda

  • En servicio, ¿podemos usar preferencias compartidas?

  • Si guardamos los datos en las preferencias compartidas en cualquier actividad de la aplicación, ¿podremos usar esos datos en servicio con la ayuda de preferencias compartidas?

5 Solutions collect form web for “¿Puedo obtener datos de preferencias compartidas dentro de un servicio?”

Puede acceder a la instancia de preferencias compartidas predeterminada, que se comparte en todas sus clases de Activity y Service , llamando a PreferenceManager.getDefaultSharedPreferences(Context context) :

 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 

Esto es ideal para almacenar primitivas simples (como booleanos) o objetos serializables. Sin embargo, si está captando una gran cantidad de datos de ubicación, puede considerar el uso de una base de datos SQLite en su lugar.

Encontré la solución.
Dentro de un servicio llamamos al siguiente método para obtener las preferencias compartidas

 myapp.bmodel.getApplicationContext().getSharedPreferences("myPrefs_capture_gps_per_hour", Context.MODE_PRIVATE); 

En el código anterior myapp es un objeto de la clase de aplicación que se deriva de Application

Necesitas un contexto para tener acceso a las preferencias compartidas. La mejor manera es crear MyApplication como descendiente de la clase Application , instanciar allí las preferences y usarlas en el resto de su aplicación como MyApplication.preferences :

 public class MyApplication extends Application { public static SharedPreferences preferences; @Override public void onCreate() { super.onCreate(); preferences = getSharedPreferences( getPackageName() + "_preferences", MODE_PRIVATE); 

Por ejemplo, si necesita acceder a sus preferencias en otro lugar, puede llamar a esta opción para leer las preferencias:

 String str = MyApplication.preferences.getString( KEY, DEFAULT ); 

O puede llamar a esto para guardar algo en las preferencias:

 MyApplication.preferences.edit().putString( KEY, VALUE ).commit(); 

(No te olvides de llamar a commit() después de añadir o cambiar las preferencias!)

Sí Shivkumar, puedes usar tus preferencias de participación en cualquier tipo de servicios tan normal como lo estás usando en tu Actividad.

igual que

 SharedPreferences preferences = getSharedPreferences("<PrefName>", MODE_PRIVATE); 

Hay dos maneras de crear la instancia de SharedPreference :

Caso 1:

 SharedPreferences preferences = activity.getSharedPreferences("<PrefName>", MODE_PRIVATE); 

Caso 2:

 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 

Tenga en cuenta que si crea una preferencia con el mismo nombre (caso 1) o el mismo contexto (caso 2), incluso en lugares diferentes, sigue siendo el mismo, y puede compartir datos, obviamente.

  • Cómo saber si mi aplicación es administrada o no
  • No destruir un servicio enlazado Activar destruir
  • Maneras simples de interactuar con los servicios?
  • Servicio: onTaskRemoved no llamado si se inició con bindService
  • Android ContentProvider con servicios
  • Vinculando un servicio a múltiples actividades
  • Obtener java.lang.ClassCastException: android.os.BinderProxy cada vez que declaro y ejecuto dos servicios
  • Uso de agentes fiduciarios en la aplicación de Android
  • Java.lang.RuntimeException: Handler (android.os.Handler) envío de mensajes a un Handler en un hilo muerto
  • Android java.lang.IllegalArgumentException: Servicio no registrado
  • Alternar entre vista grande y vista normal para notificación de android mediante programación mediante el botón de acción de notificación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.