【问题标题】:How to manage Android- to external device communication via web API?如何通过 Web API 管理 Android 与外部设备的通信?
【发布时间】:2012-06-16 15:23:26
【问题描述】:

我正在构建一个程序,该程序与运行自己的内部 Web 服务器的设备交互。我通过 Web API 与设备通信。

基本上会发生一个 GUI 呈现给用户,用户可以在其中对设备进行某些修改。这些更改将传达给设备,并通过 XML 返回结果。设备需要或多或少地不断地与后台程序对话(比如每 15 秒左右)以向用户更新某些值。

我设想的结构是这样的:

UI - 主 - 网络 - XML 解析器。

我正在寻找有关如何管理这些问题的建议。我理解 UI 线程应该是独立的,以便为用户提供流畅的体验。我也明白网络至少应该是一个异步任务。我不太确定如何处理他们的互动,并确保事情顺利有效地进行。

我的想法是 Main 将处理传递数据,告诉网络器发送特定的消息或更改,将返回的 XML 传递给解析器,然后将解析的值传递给 UI 进行处理。

我很好奇除此之外的建议。

【问题讨论】:

    标签: android multithreading networking xml-parsing android-asynctask


    【解决方案1】:

    查看使用您的Activity 创建的service。在不知道您的计划细节的情况下,Service 看起来像是执行所有繁重工作的最佳解决方案。

    更新:

    您可以在服务中运行对 Web API 的调用,并在需要时通过接口更新 UI。您必须指示服务在其自己的线程上运行,因此线程安全是一个问题,但从长远来看,比使用AsyncTask 麻烦更少。

    【讨论】:

    • 我很高兴分享详细信息。哪些信息有用?
    • @Nathaniel 我不认为我需要更多详细信息。我认为创建服务是要走的路。我不认为 AsyncTask 是要走的路,对于长时间的复杂操作可能会更麻烦。服务在后台运行,没有 UI。
    • 谢谢 Mike,我会试一试的。
    【解决方案2】:

    考虑使用 Google C2DM。

    在你的情况下,

    优点 -> 更少的电池使用,协调的网络流量,不必运行持续的服务,并且没有在设备耗尽资源时被杀死的可能性。

    缺点 -> 您必须手动将结果发布回您的内部服务器,并且服务器应该知道设备正在回复哪个请求。通信中断,可能不是实时的。需要设备和 Google 市场上的 google 帐户。

    【讨论】:

    • 感谢 Madushan 的想法,我想这是我会考虑其他应用程序的东西。这个特定项目`不是设备用户可以使用谷歌帐户的情况。
    猜你喜欢
    • 2011-12-08
    • 1970-01-01
    • 2018-02-17
    • 2020-12-12
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多