Filtres d'intentions et méthodes d'un appWidget
Un appWidget n'étant ni plus ni moins qu'un Broadcast receiver, celui-ci va réagir à des intents. Voici la liste avec les méthodes correspondantes...
Les constantes
sont définies sous AppWidget. Par exemple AppWidget.ACTION_APPWIDGET_UPDATE.
ACTION_APPWIDGET_UPDATE
Cette intention va déclencher la méthode onUpdate de l'appWidget:
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
Cette méthode sera appelée:
Lors de la première instanciation de votre AppWidget (sauf si une activité d'initialisation est associée à l'appWidget)
Périodiquement suivant la valeur de android:updatePeriodMillis
Ou enfin, lors du redémarrage de votre appareil ou lors de la sortie de la mise en veille.
ACTION_APPWIDGET_ENABLED
Cette intention est envoyée lorsque l'utilisateur pose la toute première instance de votre appWidget. Les instances suivantes ne le déclencheront plus.
Si vous avez besoin d'initialiser quelque chose qui servira ensuite à toutes vos intances, c'est maintenant qu'il faut le faire (bases de données, fichiers XML, ou autres...)
La méthode suivante sera déclenchée dans votre appWidget:
public void onEnabled(Context context)
@Override
public void onEnabled(Context context, int[] appWidgetIds) {
// TODO Faire l'activation
super.onEnabled(context, appWidgetIds);
}
ACTION_APPWIDGET_DISABLED
C'est l'inverse de la précédente. Cette intention est envoyée lorsque la dernière instance de votre appWidget est retirée de l'écran d'accueil. A vous de faire le ménage à partir de la méthode suivante:
public void onDisabled(Context context)
@Override
public void onDisabled(Context context, int[] appWidgetIds) {
// TODO Faire la désactivation
super.onDisabled(context, appWidgetIds);
}
ACTION_APPWIDGET_DELETED
Cette intention est envoyée dès qu'une instance de votre appWidget est supprimée de l'écran d'accueil. La méthode déclenchée sera:
public void onDeleted(Context context, int[] appWidgetIds)
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
// TODO Faire la suppression
super.onDeleted(context, appWidgetIds);
}
La méthode onReceive()
Broadcast receiver oblige, la méthode suivante est disponible !
public void onReceive(Context context, Intent intent)
C'est elle qui va recevoir toutes les intents. Donc y compris celles vues précédement.
Vous pourrez bien entendu vous servir de cette méthode pour interpréter vos propres intents (cas d'un raffraichissement de l'Appwidget particulier, par exemple maj depuis une activité de votre application d'une donnée utile à l'Appwidget).