2011-05-16 53 views
7

我正在開發一個Android應用程序,我需要從服務器獲取數據(新聞項目)。我知道如何做到這一點,使用線程和/或AsyncTasks等,但由於我也需要在一個小部件中的數據,並且因爲我想知道一般情況下首選什麼方式,所以我想我會問你們。Android:從服務器獲取數據的最佳方式(Widget +應用程序)

我想到了一些具體的實現,即;

1)基本上創建一個使用線程來獲取數據,我從我的正常活動和Widget訪問的類。也許緩存信息供以後使用。

2)使用服務,我可以從我的窗口小部件和應用程序請求數據。此服務不需要一直運行,但可以在需要數據時啓動,並在獲取並返回數據時停止。此服務可以定期啓動以更新Widget的數據,或類似的東西。

可能有很多方法來解決這個問題,所以我很樂意聽到你認爲這是一個很好的解決方法。

由於提前, 埃裏克

回答

2

您可以使用服務從服務器獲取數據,然後將其保存在數據庫中。您的服務可以發送您的應用/小部件可以註冊的廣播,以便在存在新信息時進行收聽並自行刷新。

由於服務不需要一直運行,因此可以使用IntentService

IntentService是 服務可處理上 需求異步 請求(表示爲意圖)的基類。客戶通過 startService(意圖)調用發送請求; 服務根據需要啓動,每個Intent依次使用 線程處理 ,並在運行 時停止工作。

如果您要定期更新,那麼在每次更新之後,您的服務可以安排自己再次安排由android系統使用AlarmManager運行。

報警管理器是用於在您希望您的 應用程序代碼在特定 時間運行 情況下,即使你的應用程序不 當前正在運行。

+0

聽起來很不錯,我會試試這個。謝謝! – Erik 2011-05-16 14:37:10

0

你可能要啓動一個服務時,部件更新本身(updatePeriodMillis),並用它來獲取數據存儲它在一個sqldatabase以及刷新部件。

通過這種方式,數據被緩存,您可以從應用程序訪問它,而不必複雜化。

相關問題