0
votes

Vérification de la table DB Table toutes les secondes en arrière-plan et à l'affichage Notification

Je construisie une application de planification, je stocke toutes les notifications planifiées dans une table DB de chambre, je veux vérifier chaque seconde si l'heure / la date actuelle est égale à la table / date de la table DB, et il devrait afficher une notification pour ça.

Comment puis-je faire cela?


3 commentaires

Avez-vous envisagé d'utiliser Livadata?


Livetaa ne va pas aider pour cela


Bonjour, s'il vous plaît envisagez de faire preuve de ma réponse, j'essaie de me débarrasser de toutes mes réponses nominales zéro: D


3 Réponses :


1
votes

Jetez un coup d'œil à cette question ici: Répétez une tâche avec une heure Délai? Regardez un coup d'œil au postdelayed . Obtenez la valeur de la base de données que vous souhaitez vérifier, puis utilisez un postdelayed pour vérifier s'il correspond à UP


2 commentaires

Pouvez-vous m'aider s'il vous plaît du code de conception parce que je ne l'obtiens pas et que je suis détourné vers Workmanager et je suis toujours confus.


J'ai soumis une réponse différente maintenant, jetez un coup d'œil à ce @harbdollar



1
votes

Je pense que vous devriez utiliser un autre modèle de conception pour la mettre en œuvre au lieu de "vérifier chaque seconde", mais voici un petit extrait de fonctionnement:

@Query("SELECT id FROM T_SCHEDULER WHERE date = :currentdate")
 LiveData<Integer> getScheduledItemId(long currentdate);


2 commentaires

Vais-je mettre en œuvre cela dans un bouton ou quoi ?, Parce que je pense que le code devrait être à l'intérieur d'un service ou d'un arrière-plan?


Essayez de le mettre dans un gestionnaire comme celui-ci: Handler Handler = nouveau gestionnaire (); int retard = 1000; // Milliseconds Handler.PostDelayed (Nouveau Runnable () {Public Void Run () {// Action DB ici handler.posdelayed (this, délai);}}, retard);



0
votes

Essayez quelque chose comme ça

Handler handler = new Handler();
int delay = 1000; //milliseconds

handler.postDelayed(new Runnable() {
    public void run() { //DB action here 
        //Todo, here you would put in your DB logic to check if the stuff matches
         handler.postDelayed(this, delay);
    }
}, delay);


3 commentaires

Je suis vraiment occupé avec autre chose, je viens de le mettre en œuvre hier et cela fonctionne, mais cela fonctionne parfois lorsque je minimise l'application et fermez également toute l'application. Que puis-je faire pour y parvenir? Et aussi comment puis-je la mettre en pause et la laisser continuer quand elle a effectué quelque chose.


Vous devriez chercher à créer un service pour quelque chose comme ça @harbdollar


Oui, je sais sur le service, cela signifie que je dois l'ajouter à l'intérieur d'un service,