2015-09-30 65 views
0

目標:在AsyncTask完成後更新小部件視圖。asynctask之後sendBroadcast(在onReceive小部件中啓動)完成

場景:小部件onReceive收到用戶點擊的意圖。這將啓動一個AsyncTask聯網操作。 interface已經通過構造函數傳遞給AsyncTask,如here所述。在interface方法中,我試圖發送一個廣播,它會觸發小部件的方法onUpdate,但我不認爲它正在觸發。

思想:我最好的猜測是,onReceive又回來了,所以我試圖用它來sendBroadcastContext不再可用。我在想我可以get()AsyncTask但我不想觸發ANR如果操作時間太長。如果我get(timeout, unit)AsyncTask,恐怕我有可能錯過任務的結束並且視圖不會被更新。

完成任務後更新小部件視圖的最佳方式是什麼?

解決方案:原來,我犯了一個錯誤的起草是Intent我在廣播

回答

1

如果你能持有的觀點的引用進行更新,那麼就調用view#onUpdate 在interface.if沒有定義,並且您希望使用廣播通知視圖進行更新,因此我建議您使用LocalBroadcastManager,那麼如果上下文已存在,則無需擔心。希望這可以對您有所幫助。

+0

+1。我製作我正在播放的意圖時犯了一個錯誤,這就是爲什麼我從未收到它。 – JB0x2D1

相關問題