9
votes

Notification Android à la date précise

Je dois créer une application dans laquelle je dois définir une date et à cette date précise à 9 heures, je dois donner une notification. Quelle est la méthode la plus simple de faire cela? Je veux que l'application fonctionne même lorsque l'application est tuée quand même. Est alarmmanager une solution?


2 commentaires

Je voulais dire que je pouvais toujours obtenir cette notification sans accéder à l'application à nouveau


L'OP signifiait évidemment s'il sort de la batterie et le remplace.


4 Réponses :


3
votes

Vous devez créer l'application comme service Android .

Un service est un composant d'application pouvant effectuer de longueurs Opérations en arrière-plan et ne fournit pas d'interface utilisateur. Un autre composant d'application peut démarrer un service et continuera courir en arrière-plan même si l'utilisateur passe à un autre application. De plus, un composant peut se lier à un service à interagir avec elle et même effectuer une communication interprocessée (IPC). Par exemple, un service peut gérer les transactions réseau, jouer de la musique, Effectuer des fichiers E / S ou interagir avec un fournisseur de contenu, tous de la fond.


0 commentaires

1
votes

Gestionnaire d'alarme est la solution que je suppose. Vous devez définir le gestionnaire d'alarme à une heure précise, puis appellez-le appel à la notification de son OnStart. Et cela devrait être mis en œuvre dans un service. J'espère que cela a aidé.


0 commentaires

4
votes

Vous devez utiliser un alarmmanager pour définir une alarme de rtc_wakeup type.

du Docs :

Lorsqu'une alarme s'éteint, l'intention qui avait été enregistrée pour elle est diffusé par le système, démarrant automatiquement l'application cible Si ce n'est pas déjà en cours d'exécution. Les alarmes enregistrées sont conservées pendant que le le périphérique est endormi (et peut éventuellement réveil l'appareil vers le haut s'ils s'en vont Pendant ce temps), mais sera effacé s'il est désactivé et redémarré .

Donc cela signifie que:

  • Vous n'avez pas besoin d'un service continuellement en cours d'exécution pour y parvenir.
  • Pour peut-être avoir besoin d'un BroadcastListener qui écoute le démarrage_commlete événement pour ré-enregistrer l'alarme après un redémarrage de périphérique.

0 commentaires

16
votes

Pour planifier une action, vous pouvez utiliser l'alarmManager

Essayez ce code, il fonctionne pour moi: p>

1 / Déclarez la classe BroadCastraSiver pour lancer l'action, cette classe peut être à l'intérieur de votre activité ou de l'extérieur. dans un autre fichier Java p> xxx pré>

2 / à l'intérieur de votre méthode oncreate Mettez ce code P>

AlarmManager alarms = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);

    Receiver receiver = new Receiver();
    IntentFilter filter = new IntentFilter("ALARM_ACTION");
    registerReceiver(receiver, filter);

    Intent intent = new Intent("ALARM_ACTION");
    intent.putExtra("param", "My scheduled action");
    PendingIntent operation = PendingIntent.getBroadcast(this, 0, intent, 0);
    // I choose 3s after the launch of my application
    alarms.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+3000, operation) ;   


0 commentaires