2017-08-24 3 views
1

J'ai écrit juste quelques widgets dans android mais une chose m'a toujours rendu curieux. Dans la méthode onUpdate(), nous parcourons tous les identifiants du widget et il est écrit il peut y avoir plusieurs widgets actifs, mettez-les à jour tous les. Mais pourquoi devons-nous mettre à jour d'autres widgets à partir d'un widget comme celui-ci? Chaque widget a son propre programme de diffusion Broadcast et chacun peut fonctionner par lui-même. Pourquoi devons-nous appeler la mise à jour d'un autre widget?Pourquoi devons-nous mettre à jour plusieurs widgets d'un widget?

Veuillez prendre ma question facilement s'il s'agit d'une logique très simple.

+0

Je suis sûr que vous n'avez pas besoin de mettre à jour un widget s'il est enregistré en tant que récepteur de diffusion. Vous en avez besoin si ce n'est pas le cas. – daniu

Répondre

1

Chaque widget a sa propre émission reviever

Non, il ne fonctionne pas.

En premier lieu, une classe AppWidgetProvider gère tous les widgets d'application fournis par ce fournisseur. Si l'utilisateur crée plusieurs instances de ce widget d'application (par exemple, des rapports météo pour plusieurs villes), toutes sont mises à jour par cette classe unique AppWidgetProvider.

Ensuite, une instance individuelle de AppWidgetProvider est utilisée pour un seul appel onUpdate(). Cela est dû au fait que AppWidgetProvider est une sous-classe de BroadcastReceiver, onUpdate() est déclenchée par onReceive() et qu'un BroadcastReceiver enregistré de façon manifeste obtient une instance unique par appel onReceive().

+0

Merci pour un paragraphe si perspicace. – erluxman