¿Cómo usar getSystemService en una clase que no sea de actividad?

Estoy construyendo una aplicación que dispara una alarma a través de AlarmManager.

Me gustaría poder llamar a la alarma a través de su propia clase de no actividad, pero como no estoy extendiendo la actividad, no parecen tener ningún "contexto". Este concepto me confunde, y he leído los documentos sdk.

¿Cómo voy a usar:

alarmTest = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 

En mi clase de no-activty?

¿También, estoy asumiendo que el conseguir del contexto me permitirá utilizar SharedPrefs y Intents en mi clase del non-activity también?

Puede pasar el contexto a la clase que no es de actividad, que es la forma preferida o podría encapsular el contexto base de la aplicación en un singleton que le permitiría acceder al contexto en cualquier parte de la aplicación. En algunos casos esto podría ser una buena solución, pero en otros su no ciertamente una buena.

De todos modos, si quieres activar una alarma a través de AlarmManager estoy bastante seguro de que la alarma debe heredar de un Service o mejor aún de IntentService y en tales casos tienes acceso al contexto a través de this.getBaseContext() o this.getApplicationContext()

Service y Activity heredan de Context – por lo que cuando estás llamando a getSystemService en estas clases, realmente estás llamando a super.getSystemService .

Si desea tener un Context disponible en otra clase, puede pasar uno como argumento a un método de esa clase, mantener una referencia a él, etc.

Editar : Ejemplo de código. Pero en serio, es extremadamente básico – si usted entiende la herencia y los métodos.

 class MyActivity extends Activity { // Activity extends Context, so MyActivity also extends Context void someMethod() { MyOtherClass.useStaticContext(this); MyOtherClass instance = new MyOtherClass(); instance.useInstanceContext(this.getApplicationContext()); } } class MyOtherClass { static void useStaticContext(Context context) { } void useInstanceContext(Context context) { } } 

Puede probar lo siguiente, que le permite obtener el contexto actual de la vista se está ejecutando a través de.

 alarmTest = (AlarmManager)this.getContext().getSystemService(Context.ALARM_SERVICE); 

Necesitas pasar un contexto a la clase que no es de actividad.

  • ¿Cómo puedo llamar a getContentResolver en android?
  • obtiene el objeto Activity mientras está en el contexto View
  • Cambiar el nombre de un archivo en el almacenamiento interno
  • ¿Cómo puedo compartir un archivo SharedPreferences a través de dos aplicaciones de Android diferentes?
  • Carga de contexto de un archivo APK en Android
  • Utilizar el editor de diseño de manera efectiva en diseños con fragmentos no estáticos
  • ¿Tengo fugas de contexto?
  • El estilo de Android Holo Light cambia dependiendo del contexto elegido
  • Contexto de actividad de acabado android
  • ¿La mejor práctica para pasar Contexto a clases sin actividad?
  • Get Context en la clase non-Activity
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.