2010-06-13 4 views
0

chaque fois que je recrée le widget écran d'accueil sur mon téléphone, la méthode onReceive() n'est pas appelée.onReceive de l'écran d'accueil Android Widget ne fonctionne pas lors de la recréation du widget

le problème serait qu'il ne répond pas à appuyer sur des boutons que je cède sa fonction qui réside dans la méthode OnReceive ..

La question ne réside pas sur l'émulateur, mais quand je l'ai testé avec mon téléphone , ça ne répond pas.

Quelle serait la meilleure solution pour cela?

Répondre

0

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 :)