Je dois configurer une alarme dans un certain intervalle de temps. Pour y parvenir, j'ai écrit:Le gestionnaire d'alarmes ne fonctionne pas sous Android
classe TestFragment
private void setupAlarmManager(){
AlarmManager manager = manager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE);
Intent alarmIntent = new Intent(getContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(), i, alarmIntent, PendingIntent.FLAG_ONE_SHOT);
manager.set(AlarmManager.RTC_WAKEUP,1499510100000L, pendingIntent);
manager.set(AlarmManager.RTC_WAKEUP,1499510220000L, pendingIntent);
}
classe AlarmReceiver
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "I'm running", Toast.LENGTH_SHORT).show();
}
}
Je mets le point de débogage à Toast.makeText(context, "I'm running", Toast.LENGTH_SHORT).show();
mais rien ne se passe.
= 16 heures 1499510100000L
16h03 = 1499510220000L
Qu'est-ce que je fais mal ici? En outre, je veux ajouter une notification locale dans la méthode onReceive
.
'4PM = 1499510100000L 4:03 PM = 1499510220000L' ** FAUX **. Ces valeurs sont les * millisecondes * que le gestionnaire d'alarmes est supposé attendre depuis que vous l'avez exécuté. Ce n'est pas ** une valeur de temps **. En passant, 1499510100000 correspond à environ '47 ans et demi'. Vous ne voulez probablement pas attendre si longtemps pour voir si votre alarme se déclenche ...;) –
d'où vient 1499510100000L? utiliser un calendrier à la place. –
@Rotwang @Mehran Cette valeur pourrait être erronée. Je vais le vérifier mais ces valeurs proviennent de la base de données qui stocke le temps en millisecondes en utilisant la bibliothèque de temps 'Java.Util'. Je ne peux pas utiliser 'new Date(). GetTime()' au lieu de 'Calendar' ici? –