2012-06-20 1 views
1

Je développe une application J2ME, qui est censée démarrer à chaque heure. J'utilise la méthode PushRegistry.registerAlarm, et cela fonctionne très bien. Même si j'éteins le téléphone et que je l'allume, cela fonctionne toujours.PushRegistry.registerAlarm lorsque le téléphone est éteint

Le problème est le suivant: Si le téléphone reste éteint pendant plus d'une heure, lorsque le téléphone est allumé, l'heure de l'alarme s'est écoulée. Et l'application n'est pas avertie qu'elle doit commencer.

QUESTION:
Existe-t-il un moyen d'appeler l'alarme de ma midlet même si l'heure réelle s'est écoulée depuis l'heure planifiée?

Répondre

1

Chaque fois que l'on a affaire avec le téléphone étant éteint, MIDlet avoir à « mémoriser » quelque chose quand il ne fonctionne pas et d'autres choses qui a besoin, eh bien, persistance, la première chose qui vient à l'esprit est MIDP rms,

... API de gestion des enregistrements, un mécanisme de stockage persistant, par lequel les MIDlets peuvent stocker des données de manière persistante et les récupérer plus tard.

Pour votre cas, il semble assez simple: utiliser le RMS pour garder le moment de la prochaine notification prévue, comme

  1. à chaque notification MIDlet fait,
    remplacer la valeur actuelle de la prochaine temps -expected avec un pour la notification suivante
  2. à startApp (ou périodiquement par tâche de minuterie/ou par un fil d'arrière-plan, peu importe),
    vérifier la valeur RMS et savoir si e Il y avait un événement attendu (non supprimé)
+0

Salut Gnat, merci pour la réponse. J'ai déjà une persistance RMS sur mon application, je peux y stocker l'heure de début prévue. Mais si le téléphone reste hors tension plus longtemps que mon heure de début enregistrée par registerAlarm(), l'application ne démarre pas lorsque le téléphone est allumé. Ce que vous avez dit est de détecter si l'alarme n'a pas été déclenchée, mais cette détection ne se produira que lors de l'exécution suivante de l'application par l'utilisateur. Ne sera pas détecté automatiquement. Ni l'application ne démarre automatiquement, n'est-ce pas? – Derzu

+0

@Derzu bien que ce serait une question différente/distincte de la façon dont vous l'avez rédigé à l'origine (et un très intéressant je pense). L'API MIDP 2 (JSR 118) ne supporte pas le démarrage automatique, il faudrait utiliser des trucs spécifiques au fournisseur pour le périphérique cible s'il y en a, ou passer à MIDP 3, encore une fois, si le périphérique cible le supporte – gnat

Questions connexes