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.

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"); } 
  • Android O: Servicio no detenido por límites de ejecución de fondo
  • Servicio de Android Creación de una nueva instancia de clase Singleton
  • Creación de servicio sin consolidar en Kotlin
  • ¿Comprobar si el servicio se está ejecutando en Android?
  • Escuchar permanentemente los cambios en el portapapeles
  • Notificación de primer plano en Android inicia nueva Actividad (vía pendingIntent) en lugar de una existente
  • Android Chronometer, retener el estado de tiempo (y seguir contando en segundo plano)
  • NullPointerException en el constructor de Service
  • Cómo activar Internet continuamente en modo doze Marshmallow and Nougat
  • ¿Por qué no Service.onStop método?
  • Diferencias entre intención y pendiente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.