Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Existe una manera sencilla de detener un servicio en respuesta a que un usuario haga clic en una notificación?

Me gustaría el siguiente comportamiento: el usuario hace clic en una notificación y Android detiene mi servicio.

El problema es que detener un servicio requiere una llamada a stopService y no puedo crear fácilmente un PendingIntent que hace eso.

Así que la única manera que encontré para hacer esto es hacer que mi servicio reciba un intento especial extra que hace que el servicio de llamada stopSelf y detener.

¿Existe una forma más sencilla de cancelar directamente un servicio desde un clic de notificación?

  • Cómo obtener la ubicación actual latitud y longitud en android
  • ¿Se ejecuta un widget de Android en el mismo proceso que su aplicación?
  • ConectividadManager getActiveNetworkInfo excepción de puntero nulo
  • Uso de un wakelock en un servicio Android 1.5
  • ¿Cómo transferir archivos entre aplicaciones de Android que se ejecutan en el mismo dispositivo?
  • Inicio de una actividad desde una ventana de superposición del sistema después de pulsar el botón Inicio
  • Ejemplo: Comunicación entre actividad y servicio mediante mensajería
  • Listener de Internet Ejemplo de Android
  • 2 Solutions collect form web for “¿Existe una manera sencilla de detener un servicio en respuesta a que un usuario haga clic en una notificación?”

    Podrías crear un BroadcastReceiver simple que haga la llamada stopService() y usar un getBroadcast() PendingIntent para activarlo. Que BroadcastReceiver podría ser registrado en el manifiesto o vía registerReceiver() por el propio Service (en este último caso, se haría stopSelf() lugar de stopService() ).

    Eso probablemente no es más simple que lo que tienes, sin embargo, y no hay forma de activar directamente una llamada stopService() desde un PendingIntent .

    Gracias CommonsWare.

    Aquí está una ilustración rápida de su solución para aquellos que están interesados.

    El código está en la clase de servicio.

     // Create Notification private void initNotification() { //Register a receiver to stop Service registerReceiver(stopServiceReceiver, new IntentFilter("myFilter")); PendingIntent contentIntent = PendingIntent.getBroadcast(this, 0, new Intent("myFilter"), PendingIntent.FLAG_UPDATE_CURRENT); notification.setLatestEventInfo(context, contentTitle, contentText,contentIntent); mNotificationManager.notify(NOTIFICATION_ID,notification); ... } //We need to declare the receiver with onReceive function as below protected BroadcastReceiver stopServiceReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { stopSelf(); } }; 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.