IntentService、Service 或 AsyncTask

2024-05-16

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

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


意图服务只不过是由意图触发的工作线程,在单独的线程中执行其操作,然后关闭。它们被设计为启动和停止。

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

如果您的应用程序需要与服务器保持连接(即永久 tcp 连接),我会采用的方法是拥有一项服务(不是意向服务),该服务使用 asynctask 或更经典的线程托管在服务。然后,您可以使用 bindToService() 使活动与服务交互。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IntentService、Service 或 AsyncTask 的相关文章

随机推荐

  • 如何计算单击的甜甜圈元素的中点与负 y 轴之间的角度

    Consider the following codesample donut chart using jquery flot http jsfiddle net c5zsg6y3 26 now as i have added the im
  • 如何销毁一个物体?

    据我所知 很少 有两种方法 var new object Then Method 1 Set to null var null Method 2 Unset unset var 还有其他更好的方法吗 我在这里吹毛求疵吗 您正在寻找unset
  • 在 Mac OS X 上从 boot2docker 迁移到 Vagrant+NFS 的最快方法是什么?

    我有一个从官方 mysql 构建的数据库容器docker pull mysql 我有一个前端应用程序app用蛋糕建造 我有一个后端应用程序cms使用 Symfony 构建 我为两者都设置了容器链接app and cms自动启动并连接到db
  • AJAX 表单正在向自身提交?

    我不知道今晚发生了什么 但我似乎无法让 AJAX 工作 提交表单后 它会使用 URL 中的值刷新页面 我正在使用具有提交处理程序的验证插件 但它仍然会刷新 我以前用过这个方法 没有出现任何问题 看看这里的页面 让我知道您的想法 div cl
  • 在 Elasticsearch Java API 中使用 slop 维护匹配短语查询的序列顺序

    我正在尝试执行一个查询 该查询应该与短语查询类似 只是连续标记内可能存在间隙 例子 Document a b c d Search a c gt gt This should return the document Search c a g
  • 如何在 python 日志记录中插入换行符?

    import logging logging basicConfig level logging DEBUG format asctime s levelname s message s datefmt H M S logging info
  • 如何编辑应用程序包中的文件?

    在我的应用程序中 我从存储在捆绑资源中的 CSV 文件加载数据 但是 我希望能够在用户点击 更新 按钮时以编程方式更新此文件 有没有办法以编程方式更改应用程序包中的资源 这是我用来访问该文件的代码 NSString path NSBundl
  • 居中复选框视图

    如果除了 或代替 复选框之外 您还对单选按钮感兴趣 请参阅this https stackoverflow com questions 16701806 centering views 2而是提问 尽管存在
  • 垂直对齐多行文本(菜单元素)?

    我正在尝试垂直对齐 UL 内的文本 问题是某些列表项具有不止一行文本 因此无法使用行高 小提琴 http jsfiddle net jaAYT http jsfiddle net jaAYT 这是我想要达到的结果 http img402 i
  • isLocationOnEdge 公差计算(以公里为单位)

    我正在使用谷歌地图地图API位置在边缘 var isLocationNear google maps geometry poly isLocationOnEdge latlng new google maps Polyline path g
  • launch.json 中不允许使用属性 env [VSCode]

    我所做的就是在 VS 中初始化一个模板 Azure Functions 项目 当我尝试通过设置运行配置环境变量时launch json VS直接警告我这是不 允许的 此外 即使当我尝试运行我的 ps1无论如何 对于 env 来说 它不起作用
  • sql join 告诉我 ID 是否存在于其他表中

    我有 2 张桌子 A B ID FKID 1 3 2 3 3 4 4 4 我需要一个 select 语句 它显示 A 的所有内容 其中一个字段告诉我表 B 是否有任何与该 ID 匹配的 id Desired Result ID hasB 1
  • jquery 小部件、_create 或 _init

    有些jquery插件扩展小部件使用 create方法 而另一些则使用 init方法 有人可以解释两者之间的区别吗 还有什么时候扩展 widget 或直接扩展 jquery fn 更好的指导 来自jQuery UI 开发人员指南 http d
  • Android平台源码中哪里可以找到版本信息

    Android 平台源文件中的版本信息在哪里找到 我尝试查找 设置 gt gt 中列出的有关手机的一些信息 显示的一些信息包括固件版本 模块编号 基带版本 内核版本 你可以给它办理登机手续platform build core versio
  • Android:如何从输入流创建 9patch 图像?

    我使用下面的代码实例化 9patch 图像并将其设置为按钮的背景 下图显示了不理想的结果 InputStream MyClass class getResourceAsStream images btn default normal 9 p
  • celery可以分配任务给指定worker吗

    Celery 会将任务发送给空闲的工人 我有一个任务每 5 秒运行一次 我希望这个任务只发送给一个指定的工作人员 其他任务可以共享剩余的工人 芹菜可以这样做吗 我想知道这个参数是什么 CELERY TASK RESULT EXPIRES这是
  • 如何在 C# 中获取该月的最后一天? [复制]

    这个问题在这里已经有答案了 如何在 C 中找到该月的最后一天 另一种方法 DateTime today DateTime Today DateTime endOfMonth new DateTime today Year today Mon
  • 哪种 Javascript 解决方案(不是 .htc)可以真正在 IE7 和 8 中实现抗锯齿圆角?

    哪种 JavaScript 解决方案 不是 htc 确实可以在 IE7 和 8 中实现抗锯齿圆角CSS3在支持的浏览器中给出 我尝试了很多 http www ruzee com blog ruzeeborders http www ruze
  • PostgreSQL round(v numeric, s int)

    Which method http en wikipedia org wiki Rounding Tie breakingPostgres 吗round v numeric s int http www postgresql org doc
  • IntentService、Service 或 AsyncTask

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