android - IntentService、服务或 AsyncTask

标签 android

实现它的最佳方法是什么。我有一个 Android 应用程序,它将使用我的 python 服务器允许两部手机之间进行轮流通信。轮次意味着他们在一轮开始之前不能互相交谈,一旦他们发送了一条消息,他们就不能发送另一条消息,直到另一个人回应,这将开始新一轮。

我想我会使用 IntentService 但让服务器不断启动和停止似乎是错误的,我不必担心 asynctask 的问题或者这是处理它的最佳方法。我怎么可能有一个服务应该接收和向客户端发送消息,似乎服务更像是一种方式?

最佳答案

Intent 服务只不过是由 Intent 触发的工作线程,在单独的线程中执行它们的操作,然后关闭。它们旨在启动和停止。

如果您需要执行诸如 http get 之类的操作,或者在任何情况下不需要与服务器保持连接的交互,请使用 Intent 服务并使用广播事件通知您的 Activity 。

如果您的应用程序需要与服务器保持连接(即永久 tcp 连接),我想要的方法是拥有一项服务(不是 Intent 服务),该服务使用 asynctask 或更经典的方式执行网络内容服务中托管的线程。然后,您可以使用 bindToService() 使 Activity 与服务交互。

我建议不要在 Activity 中使用异步任务。正如 oneilse14 在他的回复中所述,如果水平/垂直 View 发生变化,您将面临失去服务器响应的风险。

关于android - IntentService、服务或 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9037500/

相关文章:

android - 如何确认 Android Share Intent 是否成功或完成

java - 使用phpmyadmin中的服务器上的查询重命名mysql中的数据库名称

android - 获取上下文的更好方法是什么?

java - ER_BUS_SET_WRONG_SIGNATURE - 通过 Alljoyn 进行 Android 和 Windows 交互

android - 底页横向问题

android - 多个应用程序安装程序或多个可启动项

android - liblinphone android x86_64 ffmpeg 无法加载

java - 怎样才能拿到卖家的产品

android - 使用 Eclipse ADT 插件 R19 导出时 Proguard 不起作用

android - 在 Canvas Android 上绘制多条路径