studio programacion para herramientas fundamentos desarrollo con avanzado aplicaciones android foreground-service

programacion - manual android studio avanzado



¿Cuál es la forma correcta de detener un servicio que se ejecuta como primer plano? (2)

Desde su actividad, llame a startService(intent) y pásele algunos datos que representarán una clave para detener el servicio .

Desde su servicio, llame a stopForeground(true) y luego a stopSelf() justo después.

Estoy intentando detener un servicio que se ejecuta como servicio de primer plano.

El problema actual es que cuando llamo a stopService() la notificación aún permanece.

Así que en mi solución he agregado un receptor que estoy registrando dentro de onCreate()

Dentro del método onReceive() , llamo stopforeground(true) y oculta la notificación. Y luego se stopself() para detener el servicio.

Dentro de onDestroy() el receptor.

¿Hay una manera más adecuada de manejar esto? porque stopService () simplemente no funciona.

@Override public void onDestroy(){ unregisterReceiver(receiver); super.onDestroy(); }


para iniciar y detener un servicio en primer plano desde una actividad, use:

//start Intent startIntent = new Intent(MainActivity.this, ForegroundService.class); startIntent.setAction(Constants.ACTION.STARTFOREGROUND_ACTION); startService(startIntent); //stop Intent stopIntent = new Intent(MainActivity.this, ForegroundService.class); stopIntent.setAction(Constants.ACTION.STOPFOREGROUND_ACTION); startService(stopIntent);

en su servicio de primer plano - use (al menos) este código:

@Override public int onStartCommand(Intent intent, int flags, int startId) { if (intent.getAction().equals(Constants.ACTION.STARTFOREGROUND_ACTION)) { Log.i(LOG_TAG, "Received Start Foreground Intent "); // your start service code } else if (intent.getAction().equals( Constants.ACTION.STOPFOREGROUND_ACTION)) { Log.i(LOG_TAG, "Received Stop Foreground Intent"); //your end servce code stopForeground(true); stopSelf(); } return START_STICKY; }