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

  • Uso de agentes fiduciarios en la aplicación de Android
  • NotificationListenerService para APIs por debajo de 18?
  • Android - No se pudo encontrar google-play-services_lib.apk! error
  • Java.lang.ClassCastException: android.os.BinderProxy no se puede convertir en LocalBinder
  • Cómo ocultar la interfaz de usuario en android
  • Creación de una cola de carga
  • ¿Cómo puedo detener el servicio de otra aplicación en Android?
  • Cuándo usar y cuándo no utilizar un servicio en Android
  • Vinculando un servicio a múltiples actividades
  • Actualizaciones de la base de datos Sqlite activan el servicio para actualizar a través de Content Observer
  • No destruir un servicio enlazado Activar destruir
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.