2010-02-05 12 views
1

實際上,這個問題適用於需要遠程服務器數據的任何窗口小部件。面向Android應用的主屏幕小部件的Facebook如何工作?

答案將是純粹的猜測,但您如何看待小部件獲取其數據?對於那些不知道的人,這個小部件會顯示你朋友的最新狀態更新歷史。

  1. 小部件輪詢API直接從一些 服務,公司在 背景,這輪詢服務器運行
  2. 小部件爭奪數據
  3. 不知怎的:

    ,我能想到的一些答案Facebook實施了 Android,我認爲它不存在

  4. 該小部件以某種方式檢測到 用戶正在使用該屏幕並獲取 數據點播

回答

2

我會說#1或#2。由於jleedev在他的回答中給出的原因,最有可能排在第二位。

請注意,要實現應用窗口小部件,請擴展AppWidgetProvider,它是一個BroadcastReceiver。這只是一個在後臺運行的類,並通過RemoteViews將更新推送到屏幕上的小部件。因此,您在主屏幕上看到的不是實際運行的活動,而只是一個相當靜態的視圖,通過特定的BroadcastReceiver定期更新。我說這一切表明你的#1和#2之間沒有太大的區別,因爲你編寫的所有主屏幕應用程序小部件代碼都在後臺運行。

你也不能真的做#4。不幸的是,您無法檢測應用程序小部件何時在屏幕上。目前您可以做的最好的方法是安排鬧鐘來更新您的應用程序小部件,並使用標誌來防止手機在睡着時發出警報。

+0

非常感謝,尤其是報警提示。我有點擔心電池壽命。根據您的經驗,您認爲投票如何影響電池壽命? – 2010-02-05 17:52:13

0

我寫的小部件運行一個服務,該服務定期從互聯網中提取數據並將其推送到小部件。這似乎運作良好。

+0

服務輪詢的頻率如何?只要設備處於打開狀態並且控件位於主屏幕上,它就會運行嗎?你如何看待這影響電池壽命?抱歉有這些問題。 – 2010-02-05 17:08:51

+0

它在多少次設置活動中可以進行輪詢的頻率。是的,只要小部件在主屏幕上就會運行。我沒有注意到對電池壽命有太多的負面影響,因爲我通常每小時都會保持更新速度,但給用戶提供這個選項實際上是處理這種情況的最佳方式。 – CaseyB 2010-02-05 21:20:14

0

我會假設#2。活動和小部件需要顯示相同的內容,因此使用單個服務下載和緩存數據是有意義的。小部件在某個時間間隔爲defined to update,但這不一定與服務下載數據的頻率相同。我定期刷新的大多數應用程序都有一個設置來控制刷新頻率,我想這將是一個服務設置。

+0

請注意,您可以定義android:updatePeriodMillis =「0」,然後使用警報來更新您的窗口小部件,從而使您能夠通過您描述的設置修改更新頻率。 – 2010-02-05 17:34:09

1

Android SDK documentation refers以示例簡單維基詞典 AppWidget。它運行一項服務,該服務定期從互聯網上提取數據並將其推送回小部件。完整的源代碼是available

文檔says

如果你的應用程序的Widget設置過程 需要幾秒鐘(也許當 執行Web請求),你 要求你的進程繼續, 考慮在 開始服務onUpdated () 方法...如果您每小時更新不超過一次,則此 可能不會導致電池壽命的顯着問題。

相關問題