Android: detectar el servicio reiniciado con el indicador START_REDELIVER_INTENT

Mi widget tiene un servicio adjunto para procesar varios "comandos" de clic que se pasan a través de su intención. También he establecido return START_REDELIVER_INTENT; Para el caso de cuando se reanude el servicio para no dar una excepción nullPointer al llamar a intention.getAction (); y similares. El problema es que cuando el último intento fue enviado por una de las llamadas setOnClickPendingIntent que tengo, entonces cuando el servicio se reinicia, actúa como si el usuario hubiera hecho clic en uno de los viewId. p.ej

 String command = intent.getAction(); int appWidgetId = intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID); if(command.equals("some command")){ //do something } ... remoteView.setOnClickPendingIntent(R.id.viewId,MyClass.makeControlPendingIntent(getApplicationContext(),"some command",appWidgetId)); 

Donde makeControlPendingIntent es:

 public static PendingIntent makeControlPendingIntent(Context context, String command, int appWidgetId) { Intent active = new Intent(context,MyService.class); active.setAction(command); active.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); Uri data = Uri.withAppendedPath(Uri.parse("myclass://widget/id/#"+command+appWidgetId), String.valueOf(appWidgetId)); active.setData(data); return(PendingIntent.getService(context, 0, active, PendingIntent.FLAG_UPDATE_CURRENT)); } 

¿Hay algo que pueda hacer para comprobar si el servicio se está reiniciando para no ejecutar ninguno de esos comandos en el caso en que Android reinicie mi servicio?

¿Hay algo que pueda hacer para comprobar si el servicio se está reiniciando para no ejecutar ninguno de esos comandos en el caso en que Android reinicie mi servicio?

El parámetro flags para onStartCommand() contendrá START_FLAG_REDELIVERY si la Intent está siendo re-entregada. Por lo tanto, puede hacer algo como esto:

 public int onStartCommand(Intent intent, int flags, int startId) { if ((flags & START_FLAG_REDELIVERY)!=0) { // if crash restart... // do something here } // rest of logic here } 

Usted debe ser capaz de comprobar si la intención es nulo para saber si su reiniciado

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.