2017-05-11 3 views
0

J'ai deux types de widgets d'application homescreen 1. Composé de vues de texte et 2. Composé de listview. La première affiche les données provenant des matrices et la seconde extrait les informations du serveur (c'est-à-dire implique des opérations de mise en réseau). Et ils ont tous deux besoin d'être mis à jour chaque minute. Maintenant, pour chaque cas, lesquelles des techniques suivantes sont les meilleures? En tant que débutant à Android, il est difficile de décider quelle technique est la meilleure pour la vie de la batterie des appareils. Merci pour l'aide à l'avance.Quelle est la meilleure technique pour mettre à jour les widgets app homescreen chaque minute dans Android?

Répondre

4

En tant que débutant android il est difficile de déterminer quelle technique est la meilleure pour la durée de vie de la batterie des appareils

La réponse est « aucun des — ci-dessus ne cherche pas à mettre à jour des widgets d'applications une fois par minute ". Google se donne beaucoup de mal pour vous empêcher de faire ce genre de chose, parce que les utilisateurs se sont lassés des développeurs d'applications qui gaspillent la batterie.

Handler

Handler a peu à voir avec ce que vous essayez de résoudre. Vous pouvez utiliser Handler et postDelayed() pour implémenter une boucle de synchronisation en cours de traitement, mais vous pouvez également utiliser des solutions Java classiques telles que ScheduledExecutorService.

Cependant:

  • Cela vous oblige à avoir un processus en cours d'exécution tout le temps. À partir de Android O, cela vous obligera à avoir un service de premier plan, ce qui signifie que vous devrez montrer un Notification. Les utilisateurs sont irrités par cela, ainsi que par les applications qui semblent consommer de la RAM système en continu sans raison valable. Et, en pratique, vous ne pouvez pas avoir un processus en cours tout le temps de toute façon, mais avec un service de premier plan collant, vous pouvez vous rapprocher. Cela ne mettra pas à jour les widgets de l'application lorsque l'appareil est en mode Doze sous Android 6.0 ou version ultérieure.

  • Cela ne mettra pas à jour les widgets de l'application lorsque l'appareil est en veille.

Alarm Manager

AlarmManager vous permettra d'avoir pas nécessairement un processus en cours tout le temps. Cependant, cela ne mettra pas à jour les widgets de l'application lorsque l'appareil est en mode Doze sous Android 6.0 ou version ultérieure.

JobScheduler

JobScheduler emplois sont inexactes (à savoir, vous ne contrôlez pas exactement quand ils sont exécutés), et je ne sais pas si elles peuvent être invoquées aussi souvent qu'une fois par minute. En outre, cela ne mettra pas à jour les widgets de l'application lorsque l'appareil est en mode Doze sous Android 6.0+ et ne mettra pas à jour les widgets de l'application lorsque l'appareil est en mode Doze partiel sous Android 7.0+.

Firebase JobDispatcher

Cela vous oblige à avoir un serveur, pour gérer les enregistrements et envoyer des messages FCM haute priorité à chaque minute. Ma conjecture est que Google finira par empêcher les serveurs de le faire.

SyncAdapter

Vous avez aucun contrôle sur exactement quand les synchronisations se produisent. En outre, cela ne mettra pas à jour les widgets de l'application lorsque l'appareil est en mode Doze sous Android 6.0+ et ne mettra pas à jour les widgets de l'application lorsque l'appareil est en mode Doze partiel sous Android 7.0+.

+0

J'ai besoin de montrer l'horloge numérique sur le widget d'écran d'accueil. Donc, il y a une contrainte qu'il met à jour chaque minute. Sur le deuxième widget, j'ai besoin de mettre à jour les nouvelles fraîches. Donc, ils doivent être mis à jour chaque minute. En outre, je suppose que si nous n'avons pas besoin de mettre à jour le widget lorsque l'écran est éteint alors nous n'avons pas besoin de se soucier du mode Doze droit? – Bishwash

+0

@Bishwash: Une horloge est mieux implémentée comme une caractéristique de l'écran d'accueil, pas comme un widget d'application. Mettre à jour les nouvelles quelques fois par jour, ou à la demande de l'utilisateur, serait * beaucoup * mieux que de mettre à jour les nouvelles chaque minute. – CommonsWare

+0

Quel changement sera dans votre réponse si je posais la même question avec l'heure de mise à jour toutes les demi-heures ou toutes les heures? – Bishwash