1

我正在構建一個程序,它與運行其內部Web服務器的設備進行接口。我通過Web API與設備進行通信。如何通過Web API管理Android-到外部設備的通信?

基本上會發生什麼是GUI呈現給用戶,用戶可以在其中對設備進行某些修改。這些更改將傳遞到設備,並通過XML返回結果。設備需要或多或少連續地(例如每15秒左右)與程序在背景中交談以向用戶更新某些值。

我的結構我構想是這樣的:

UI - 主 - 網絡 - XML解析器。

我在尋找如何管理這些建議。我瞭解UI線程應該是分開的,以便爲用戶提供流暢的體驗。我也明白,網絡至少應該是一個異步任務。我不太確定如何處理他們的互動,並確保事情順利和有效地發生。

我的想法是Main會處理傳遞數據,告訴網絡服務器發送特定的消息或更改,將返回的XML傳遞給解析器,然後將解析的值傳遞給UI進行處理。

我很好奇,但除此之外的建議。

回答

2

看看創建Activity創建的service。在不知道計劃細節的情況下,Service看起來像是完成所有繁重工作的最佳解決方案。

UPDATE:

你可以有一個服務的調用網絡API運行,並在需要時,通過接口更新UI。您必須指示服務在其自己的線程上運行,因此線程安全性是一個問題,但從長遠來看,比使用AsyncTask時更麻煩。

+0

我很高興分享這些細節。什麼信息將是有用的? – Nathaniel

+0

@Nathaniel我不認爲我需要amymore細節。我認爲創建一項服務是一條路。我不認爲AsyncTask是要走的路,對於長時間複雜的操作可能會更麻煩。服務在沒有UI的情況下在後臺運行。 –

+0

謝謝麥克,我會給它一個。 – Nathaniel

0

想一想使用Google C2DM。

在你的情況,

優點 - >更少的電池使用,協調網絡流量,不必運行繼續服務,並在設備耗盡資源並沒有被殺害的潛力。

缺點 - >您必須手動將結果發佈回您的內部服務器,並且服務器應知道設備正在回覆哪個請求。通信中斷,可能不是實時的。需要設備和Google市場上的Google帳戶。

+0

感謝Madushan這個想法,我認爲這是我爲其他應用程序而設計的。這個特定的項目不適用於設備用戶可以使用谷歌賬戶的情況。 – Nathaniel