Java 异步任务vs线程vs服务(与服务器通信)

Java 异步任务vs线程vs服务(与服务器通信),java,android,multithreading,android-fragments,android-asynctask,Java,Android,Multithreading,Android Fragments,Android Asynctask,我正在尝试实现一个android应用程序,我可以向控制机器人的服务器发送命令。问题非常“简单”:我希望保持与线程服务任务的连接并与之通信,以便向服务器发送消息,并获取更新UI的响应,并向用户提供来自robot传感器的相关信息 那么,我的决定应该是什么?我知道它可能是复制品。但我没有发现同样的问题,因为我想扩展这个问题: 有没有办法在活动上运行后台进程、更改活动并使其继续运行?(活动或片段,我将来会选择片段) 提前感谢您的帮助 这里有一个参考代码,它使用安卓应用程序Arduino来控制机器人。你可

我正在尝试实现一个android应用程序,我可以向控制机器人的服务器发送命令。问题非常“简单”:我希望保持与线程服务任务的连接并与之通信,以便向服务器发送消息,并获取更新UI的响应,并向用户提供来自robot传感器的相关信息

那么,我的决定应该是什么?我知道它可能是复制品。但我没有发现同样的问题,因为我想扩展这个问题:

有没有办法在活动上运行后台进程、更改活动并使其继续运行?(活动或片段,我将来会选择片段)


提前感谢您的帮助

这里有一个参考代码,它使用安卓应用程序Arduino来控制机器人。你可以看到它的结构,这也是我在我的机器人中使用的。AsynkTasks在这方面不是一个好的选择。对于长时间运行的通信来说,使用服务是一个好主意

这是一个由Android控制的机器人的现场演示


这是一个参考代码,它使用Android应用程序Arduino来控制机器人。你可以看到它的结构,这也是我在我的机器人中使用的。AsynkTasks在这方面不是一个好的选择。对于长时间运行的通信来说,使用服务是一个好主意

这是一个由Android控制的机器人的现场演示


最好的解决方案可能是服务。
一篇关于服务的非常好的文章,包括如何通过意图或广播事件与后台服务进行通信,可以在

找到最好的解决方案可能是服务。
一篇关于服务的非常好的文章,包括如何通过意图或广播事件与后台服务进行通信,可以在

找到一个典型的模型,用于您的情况:

  • 用于长时间运行通信的服务(从队列中获取“订单
  • BroadcastReceiver将收到有关服务处理的异步事件的通知
  • 处理用户界面的活动

一个考虑考虑的参考文献是

< P>你的一个典型模型是使用:

  • 用于长时间运行通信的服务(从队列中获取“订单
  • BroadcastReceiver将收到有关服务处理的异步事件的通知
  • 处理用户界面的活动

考虑查看的一个引用是

< P>后台工作,并将结果通知UI线程。

浏览以获取更详细的概述

异步任务

它是一个围绕线程和处理程序的助手类,用于使线程化变得简单。只需在后台执行任务并在UI线程中发布结果即可

线程

在java中使用线程的基本概念,创建自己的线程池,使用处理程序执行任务,并在UI线程中发布结果。主要用于在UI可见时需要更长时间运行的任务(对于简单的后台任务asynctask)。这将花些时间实现,但为您提供对任务管理的更多控制

服务

当您有运行时间更长的任务,并且希望ui独立于任务时,将使用服务

在您的情况下,我希望您使用服务进行沟通,并使用活页夹或广播管理器反映UI中的变化


在后台完成工作,并将结果通知UI线程

浏览以获取更详细的概述

异步任务

它是一个围绕线程和处理程序的助手类,用于使线程化变得简单。只需在后台执行任务并在UI线程中发布结果即可

线程

在java中使用线程的基本概念,创建自己的线程池,使用处理程序执行任务,并在UI线程中发布结果。主要用于在UI可见时需要更长时间运行的任务(对于简单的后台任务asynctask)。这将花些时间实现,但为您提供对任务管理的更多控制

服务

当您有运行时间更长的任务,并且希望ui独立于任务时,将使用服务

在您的情况下,我希望您使用服务进行沟通,并使用活页夹或广播管理器反映UI中的变化