2012-06-29 12 views
5
private void setFPAlarm() 
    { 
    Intent intent = new Intent(this, FPService.class); 
    PendingIntent pi = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

    long nextSearchTimeMillis = DateUtils.MINUTE_IN_MILLIS/2; 
    Time nextSearchTime = new Time(); 
    nextSearchTime.set(nextSearchTimeMillis); 

    AlarmManager FPAlarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    FPAlarm.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), nextSearchTimeMillis, pi); 
    } 

Estoy usando el código anterior para ejecutar mi IntentService cada 30 segundos. Algunas veces, un proceso de servicio demora más de 30 segundos, por lo tanto, otro debe comenzar antes de que el anterior finalice. Quiero saber qué le sucede a la anterior en ese caso. ¿Está en espera? ¿El segundo espera al anterior para terminar?Múltiples instancias de IntentService en Android

Mi segunda pregunta es: no quiero que esperen uno para el otro. Quiero que se ejecuten dos servicios al mismo tiempo. Entonces el próximo servicio debería comenzar independientemente de lo que esté haciendo el anterior. ¿Está el código por encima de la forma correcta de lograr esto?

+0

No lo sé pero intente con este código. intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK); – rajpara

Respuesta

9

IntentService es como una cola de solicitud de trabajo. No se maneja un nuevo intento hasta que onHandleIntent finalice para el intento anterior. ¿Por qué quieres ejecutar IntentService cada 30 segundos si a veces lleva más de 30 segundos terminar?

Con respecto a hacer preguntas, a veces la respuesta a una pregunta restringida es "no puedes hacer lo que quieres hacer" o "lo que estás haciendo no hará lo que crees". Si proporciona el contexto del problema, es más fácil para los encuestados agregar una mejor solución.

En su caso, solo puedo adivinar que debe iniciar una IntentService siempre que lo necesite, y dejar que el mecanismo de puesta en cola de IntentService se encargue del resto. Como alternativa, puede usar un servicio regular y un subproceso de subprocesos.

+0

Porque estoy grabando una breve consulta de audio cada 30 segundos y usando un poco de procesamiento de señal. Necesito un resultado diferente para diferentes consultas. – Erol

Cuestiones relacionadas