Android: Variables de acceso pasadas al servicio

He creado un servicio que se llama desde la actividad principal y pasando una simple variable para acceder y brindar a la pantalla desde dentro del servicio. Parece que no puedo encontrar el código correcto para acceder a la variable desde el interior del servicio. Cualquier ayuda sería muy apreciada. Gracias.

Actividad principal que llama al servicio desde dentro de un oyente de clic de botón:

@Override public void onClick(View v) { Intent eSendIntent = new Intent(getApplicationContext(), eSendService.class); eSendIntent.putExtra("extraData", "somedata"); startService(eSendIntent); } 

Código de clase de servicio eSendService:

 public class eSendService extends Service { @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); // This is the code that I am struggling with. Not sure how to access the // variable that was set in the intent. Please advise. // The below code gives the following error in eclipse: // The method getIntent() is undefined for the type eSendService Bundle extras = getIntent().getExtras(); } } 

Nuevamente, gracias por toda y cualquier ayuda. Simplemente no puedo encontrar un ejemplo sencillo que me muestre cómo hacerlo. Gracias.

2 Solutions collect form web for “Android: Variables de acceso pasadas al servicio”

Ok, encontré mi propia respuesta finalmente y quiero compartirla para ayudar a cualquier otra persona.

La respuesta: onStart () o onStartCommand () (que depende de la api de destino) son las que la intención se pasa a y se llama después de que startService () es llamado por la actividad. Pensé que la intención se pasó al método onCreate (), pero en realidad se pasa al comando de inicio para los servicios.

 @Override public void onStart(Intent intent, int startId) { // TODO Auto-generated method stub super.onStart(intent, startId); String extras; extras = intent.getExtras().getString("extraData"); Toast.makeText(this, extras, Toast.LENGTH_LONG).show(); } 

¿Qué problema tenía su código original? Usted estaba tratando de obtener los datos antes de llamar a super.onCreate (), que podría ser el problema.

Creo que quieres:

  @Override public void onCreate() { super.onCreate(); Bundle extras = getIntent().getExtras(); string extraData = extras.getString("extraData"); } 
  • Llamar setVolumeControlStream desde un servicio
  • ¿Cómo se puede ejecutar servicio indefinidamente y también permitir la vinculación en android?
  • Por favor, explique algunos conceptos de servicio de Android
  • ¿Cómo puedo llamar a startIntentSenderForResult en el servicio correctamente?
  • ¿Se puede pasar un paquete a un servicio?
  • Android Fatal señal 11 (SIGSEGV) en 0x636f7d89 (código = 1). ¿Cómo se puede localizar?
  • ¿Cómo puedo detener el servicio de otra aplicación en Android?
  • ¿Cuál es la forma preferida de volver a llamar a una actividad de Android desde un subproceso de servicio
  • Servicios de Android: START_STICKY no funciona en Kitkat
  • Obtención de I / art: Explicit concurrent mark sweep GC liberado
  • Establecer un Listener en una clase basada en servicio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.