2010-06-13 50 views

回答

0

由于您没有更多的细节内容(可能是关于如何注册接收器以及如何绑定待定意图的某些源代码)。可能您的手机是带滑动键盘的型号,或者这些主屏幕可能会改变方向。因为当主屏幕的屏幕方向改变(或任何硬件配置)时,主屏幕会膨胀并重新创建。所以,对于你的按钮,最初绑定到它的意图在娱乐之后消失了。根据文档(对不起,找不到链接),inflater将只获得最新的远程更新。所以,下面的工作:

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(...); 

它仍然是确定和按钮将会触发等待预期的意图,但是,如果由于任何原因配置发生变化,主屏幕是无效的(和重建) ,appwidgetmanager只会根据更新更新进行更新,该更新没有指定关于点击意图的任何内容。

解决方法是,每次更新远程视图时,都必须设置所有待处理的意图。我不确定它会如何影响性能,但它是我能做的唯一的工作方法。 (但我的部件更新像16次/秒,至少它的工作:)