2010-08-09 28 views
0

我一直在試圖弄清楚這一點,現在變得越來越困惑。在Widget中使用按鈕時應該使用Activity還是Service?

我做了一個顯示兩篇文章(標題+圖片)的Android Widget。除此之外,我還有用於翻閱文章的前後翻頁按鈕。我不明白的是如何在按下按鈕時更改Widget RemoteViews。這應該是小部件中最基本的操作之一,但是,我似乎無法弄清楚。

所以......

  • 我能做到這一點只在一個的AppWidgetProvider OnClickListener?

  • 或者我必須創建一個沒有窗口的活動(visibility = false)嗎?

請原諒我的愚蠢。這可能是非常基本的。

回答

0

我不認爲這是基本的 - 這是我想了一會兒,關於我寫的耳機阻止器應用程序,它只是一個你打開/關閉的小部件。

我最終通過Google的源代碼查看了他們做了什麼。答案是使用AppWidget的接收器性質通過setOnClickPendingIntent()接收更新。然後在onReceive()中,您對自己的點擊做出的反應與試圖創建小部件的人相比有所不同。 You can see a sample of what I did in the Headset Blocker source

最終,活動或服務對於您想要的重量來說太重。使用與應用部件本身相同的BroadcastReceiver要好得多。

+0

「最終,活動或服務的重量太重,無法滿足您的需求。」 - 這取決於你在做什麼。請記住,主應用程序線程上調用了'BroadcastReceiver'的onReceive()'。如果您要在該線程上進行重要工作(比如超過300毫秒),您應該認真考慮將該工作委託給一個「IntentService」,以便可以在後臺線程上以後臺優先級完成工作。 – CommonsWare 2010-08-09 15:07:47

+0

夠正確。我想這取決於標題+圖像是在用戶點擊小部件還是提前緩存時檢索的。 – 2010-08-09 15:15:18

相關問題