我采取一个小窗口,我面临着以下问题:窗口小部件的onUpdate调用时配置活动推出
1)onUpdate
,当我的小部件添加到主屏幕被调用,即使我指定配置活动。只要我将它添加到主屏幕,发送APPWIDGET_ENABLED
广播,然后APPWIDGET_UPDATE
,然后配置活动启动..这是一个错误?在配置活动返回之前,我应该如何理解onUpdate
正在调用的方法?我可以通过共享的首选项值来实现,但我希望它的行为与开发人员指南中的相同,即不应调用onUpdate
方法。
2)onUpdate
不叫每updatePeriodMillis
秒,已被设置为10000
,即10
秒用于测试目的..我错过清单文件内的receiver
申报的东西吗?我一直收到林特警告导出的接收器不需要许可但我认为这是一个Lint问题,不是我的错。 编辑:我刚刚在参考文档中发现了这个:注意:使用updatePeriodMillis请求的更新不会每30分钟发送一次。因此,小部件未更新的频率是正确的,我已将时间更改为1800000
毫秒。
3)我想送我自己的广播动作控件提供者,是正确的在清单中添加另一receiver
块针对同一供应商类或者我应该包含intent-filter
中只添加另一种意图行动动作是APPWIDGET_UPDATE
?顺便说一句,我已经评论我的第二个receiver
区块,它不是上述问题的原因。我创建了另一个receiver
块,因为我想将其声明为未导出,以便让intent-filter
操作仅由我的应用程序代码而不是其他任何人触发。
的AndroidManifest.xml
<receiver android:name="MyWidgetProvider"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/my_widget_info" />
</receiver>
<receiver android:name="MyWidgetProvider"
android:exported="false">
<intent-filter>
<action android:name="org.test.mywidget.FORCE_SMALL_WIDGET_UPDATE" />
</intent-filter>
</receiver>
my_widget_info.xml
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="294dp"
android:minHeight="110dp"
android:updatePeriodMillis="1800000"
android:initialLayout="@layout/my_widget_layout"
android:configure="org.test.mywidget.MyWidgetConfiguration"
android:resizeMode="none">
</appwidget-provider>
对于** 1)**请参阅我的答案在这里:http://stackoverflow.com/a/12236443/380151 – Spiff 2012-09-03 14:12:47
@Spiff这是我如何解决这个问题,通过使用* isInitialized_ID *布尔共享首选项-widget实例。谢谢。 – 2012-09-04 14:10:36
您能否提供关于您的解决方案的更多描述?也许一些代码示例? – DrHolera 2016-03-18 10:39:55