Deseo enviar datos al servidor en un intervalo de regular
. Entonces, estoy usando AlarmManager
para lo mismo. Funciona bien, pero el problema es que cuando I cancel
cambian la alarma en Date/Time
. En ese momento, la alarma se dispara nuevamente antes de cancelarse, por lo que empeora mi aplicación ya que se envía un extra
a server
con irregular
intervalo.Error de AlarmManager al restablecer/cancelar la alarma en el cambio de fecha y hora
Aquí está mi clase BroadCastReceiver
con AlarmManager
.
public class MyReceiver extends BroadcastReceiver{
AlarmManager mgr;
PendingIntent pi;
Intent intent;
public static boolean flag = false;
@Override
public void onReceive(final Context arg0, Intent arg1) {
if(arg1.getAction().equals("android.intent.action.TIME_SET")){
Log.d("MyReceiver", "Time set");
mgr = (AlarmManager) arg0.getSystemService(Context.ALARM_SERVICE);
intent = new Intent(arg0, TestService.class);
intent.putExtra("test", "testvalue");
pi = PendingIntent.getService(arg0, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
if(!flag){
mgr.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 10000, 5000, pi);
flag = true;
}
else{
mgr.cancel(pi);
pi.cancel();
flag = false;
}
}
}
}
A continuación se muestra la captura de pantalla con la salida Logcat que explica que después de la cancelación de la alarma se dispara una vez más tiempo justo después de la cancelación.
Como se puede ver en la salida de Logcat
black arrow
muestra donde he cambiado ese momento para cancelar la alarma y red arrow
muestra que después de la cancelación de la alarma una vez que disparó justo antes de la cancelación que no debería suceder. Entonces, ¿alguien puede dar mi idea de por qué está sucediendo eso y qué debo hacer para que restrict
se active de nuevo la alarma antes de cancelarla?
NOTA: - Esto solo ocurre cuando intento aumentar la fecha/hora, por ejemplo, de 10:00 a 11:00, funciona perfecto cuando disminuyo el tiempo, por ejemplo, de 10:00 a 9:00.
No estoy deteniendo el servicio. Estoy restableciendo la alarma. –
Intente detener el servicio también, supongo ... Bcos puede haber posibilidades de que el servicio todavía esté haciendo su trabajo mientras se cancela el administrador de alarmas. –
No creo que sea el caso, porque como dije, solo sucede cuando estoy aumentando el tiempo y funciona bien cuando disminuyo el tiempo. –