Puisque vous n'avez plus de détails (peut-être un code source sur la façon dont vous enregistrez le récepteur et comment vous liez l'intention en attente). Votre téléphone est probablement un modèle avec un clavier coulissant, ou l'écran d'accueil peut changer d'orientation. Parce que lorsque l'orientation de l'écran d'accueil de l'écran a changé (ou toute configuration matérielle), l'écran d'accueil est gonflé et recréé. Donc, pour vos boutons, l'intention qui s'y rattachait à l'origine est partie après la récréation. Selon la documentation (désolé, ne peut pas trouver le lien), l'inflateur obtiendra seulement la dernière mise à jour de remoteviews. Donc, ce qui suit serait pas travail:
RemoteViews rv = ...;
// Assign the button to some pending intent
rv.setOnClickPendingIntent(View, pi);
AppWidgetManager.Update(...);
// And after sometime, you make changes to the rv
rv.setFloat();
// And update again
AppWidgetManager.Update(...);
Il est toujours ok et le bouton se déclenche l'attente intention comme prévu, mais, si pour une configuration raison changé et l'écran d'accueil est invalidée (et recréée) , l'appwidgetmanager ne mettra à jour que conformément à la mise à jour dernière, qui, n'a pas précisé quoi que ce soit sur l'intention de cliquer. En d'autres termes, chaque fois que vous mettez à jour la vue distante, vous devez également définir toutes les intentions en attente. Je ne suis pas sûr de l'impact que cela aurait sur la performance, mais c'est la seule méthode de travail que je puisse avoir. (mais mon widget est mis à jour comme 16 fois/seconde et au moins cela fonctionne :)