2015-09-26 130 views
0

我開發了一個小部件,出現了一個奇怪的問題。該小部件通常在主屏幕上正常工作,並且應該進行更新。我最近對代碼做了一些更改,爲widget接收器添加了更多意圖。更新應用程序後,Widget接收器停止工作

widget的原意過濾器是如下:

<intent-filter> 
    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
</intent-filter> 

更改後,我增加了以下意圖:

<intent-filter> 
    <action android:name="com.basi.widget.MY_UPDATE_WIDGET" /> 
    <action android:name="android.intent.action.TIME_CHANGED" /> 
    <action android:name="android.intent.action.TIMEZONE_CHANGED" /> 
    <action android:name="android.intent.action.LOCALE_CHANGED" /> 
</intent-filter> 

,並通過對服務進行更新改變了小部件由發送MY_UPDATE_WIDGET意圖的週期性警報進行更新。 問題是,當我更新應用程序時,小部件停止更新並出現「問題加載小部件」。當我從主屏幕上移除小部件並將其添加回來時,即使我安裝了更多更新,它也能正常工作。看起來特定更新出現問題,即意圖改變。我已經檢查了logcat,並且沒有錯誤,但是我注意到onReceive intent在初始更新後沒有啓動,因此可能是問題所在。

我懷疑已經在主屏幕上的小部件知道接收哪個意圖 - 如果它沒有重新初始化(通過刪除它並將其添加回去),它不會聽新意圖,所以這是爲什麼問題發生。有沒有辦法告訴小部件開始接收新的意圖?這是一個不同的問題?

回答

1

經過數小時的反覆試驗,我發現問題所在。我在更新中做出的更改之一是將widget類更改爲更新版本中的不同包。這似乎是在用新版本替換軟件包後「破壞」了現有小部件的功能。將窗口小部件類文件移回原始軟件包解決了問題。額外的意圖沒有錯。

希望這會幫助別人。

+0

有使用proguard,這可以解釋爲什麼我面臨同樣的問題。謝謝 –

相關問題