每当我重新创建手机上的主屏幕小部件时,都不会调用onReceive()方法。onReceive of Android主屏幕小工具在重新创建小工具时不起作用
的问题是,这并没有按下按钮,我分配一些其功能驻留在的onReceive方法应对..
该问题不会驻留在模拟器,但是当我用我的手机进行了测试,它没有回应。
什么是最好的解决方案呢?
每当我重新创建手机上的主屏幕小部件时,都不会调用onReceive()方法。onReceive of Android主屏幕小工具在重新创建小工具时不起作用
的问题是,这并没有按下按钮,我分配一些其功能驻留在的onReceive方法应对..
该问题不会驻留在模拟器,但是当我用我的手机进行了测试,它没有回应。
什么是最好的解决方案呢?
由于您没有更多的细节内容(可能是关于如何注册接收器以及如何绑定待定意图的某些源代码)。可能您的手机是带滑动键盘的型号,或者这些主屏幕可能会改变方向。因为当主屏幕的屏幕方向改变(或任何硬件配置)时,主屏幕会膨胀并重新创建。所以,对于你的按钮,最初绑定到它的意图在娱乐之后消失了。根据文档(对不起,找不到链接),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次/秒,至少它的工作:)