2014-10-29 28 views
1

我正在android中創建一個chat app。應用程序一次將有100-150個用戶(實時更改)。 用戶數據來自http webserver。 我正在嘗試創建一個實時用戶列表,這將隨着用戶數據從服務器更改而動態更改。 有以下方法來實現這個問題- 1.我可以在每2分鐘使用poll http請求從服務器獲取數據。 有兩種輪詢方式First,使用Timertask類。 Second創建服務等級並使用警報管理器。哪種方法性能最好?後來我發現投票是真正的電池殺手。除了輪詢實時用戶列表解決方案以外是否還有其他方法? 像Facebook這樣的現代應用使用哪種技術來實時更改數據?實時用戶列表在Android應用程序

回答

0

爲什麼有必要?我不會那樣做。你可以有一個服務,從服務器獲取數據並將其保存到本地數據庫。當你開始服務時,那是你的選擇!我不會每2分鐘下載一次或類似的東西。也許你可以對用戶操作做出反應。所以如果他打開應用程序或點擊聊天列表或類似的東西。

如果你真的需要它,你可以使用GoogleCloudMessaging,但我真的認爲,這是一個可怕的想法!

+0

是的,我可以使用拉來刷新。也許我會,但我試圖找到最好的辦法。 – NeiL 2014-10-29 08:14:04

0

在我看來,你應該使用GCM代替以重複間隔使用輪詢。每當用戶發生任何變化時,您只需向您的應用發送推送通知,然後在您的BroadCastReceiver中打一個web api即可獲取最新的提要。

0

SyncAdapter/AccountManager對您的用例很有用。 Authenticator(在場景後面調用AccountManager)可以處理應用程序的身份驗證。 SyncAdapter可以處理從服務器到本地數據存儲的定期同步。您不需要使用AlarmManager自己實現它。對於示例代碼Sync Adapter

您的服務器將與SyncAdapter一起使用,沒有太多變化。唯一的區別是在你的客戶端,比如,例如,不是在AlarmManager中調用服務器的讀取數據方法,而是在擴展SyncAdapter的類的onPerformSync()中調用它們。

希望這會有所幫助。

相關問題