我採取一個小窗口,我面臨着以下問題:窗口小部件的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