0

我正在构建一个将通过 TCP 与服务器通信的 Android 应用程序。我有一些实施想法,但我不知道哪种方式最好。我是新手,我的设计随着我学习新事物而不断发展,所以现在我正在寻找有关如何最好地实施解决方案以实现我的目标的建议。

目标:能够:

  1. 向服务器发送数据
  2. 将数据发送到服务器并读取服务器响应。

    • 我发送的一些信息将提供服务器信息,其他信息将向服务器请求信息。

可能的实现:

  • Thread Run() 方法不断循环检查我的发送队列是否有东西要发送(如果有,就发送它)然后检查我是否有任何东西要读回。
    • 这会耗尽电池/烧毁CPU吗?
  • 每次我想发送/接收时创建一个新线程,一旦我完成“发送”或“发送+接收”就让它死掉
    • 我应该如何将线程交互与我的一个套接字同步?阻止制作下一个线程,直到这个线程完成?
  • 每次我需要写入或写入+读取时,创建一个线程并使用该线程调用发送或发送+接收方法
    • 如何在不燃烧电池/CPU 的情况下保持线程存活?
    • 我应该使用队列来处理传输数据的请求,我应该同步读取它直到当前的读/写完成吗?

任何关于潜在问题的额外指针、链接或警告将不胜感激。示例代码特别感谢,因为我刚刚开始使用它。谢谢你。

4

1 回答 1

2

正如您所指出的,有几种方法可以实现这一目标,每种方法都有其优点和缺点。

保持连接打开或经常重新发送它们肯定会影响电池续航时间。如果这是您的情况,我会考虑每隔一定时间将一些请求批处理为一个。这是一篇有趣的文章

几天前,我写了一篇关于我经常使用的方法,该方法效果很好。它可以像看起来一样简单,也可以为您的 Android 应用程序的整个 API 通信引擎奠定基础。这取决于您的需求。它基本上是在后台线程池中执行您的请求,由服务控制并在您的活动或您需要的任何内容中通知。每当您需要推送新请求时,只需将其入队并设置回调即可。如果您认为这可能对您有用,我会给您提供一对更深入的链接。

http://ugiagonzalez.com/2012/07/02/theres-life-after-asynctasks-in-android/ http://ugiagonzalez.com/2012/08/03/using-runnables-queues-and-executors-执行任务在后台线程在安卓/

希望能帮助到你。

于 2012-08-12T20:14:20.933 回答