我正在尝试实现一个Android应用程序,我可以将命令发送到控制机器人的服务器。问题非常“简单”:我想保持连接并与线程服务任务通信以向服务器发送消息,并获得更新UI的响应并使用户从机器人传感器获取相关信息
那么,我的决定应该是什么?我知道它可能是重复的。但我没有找到同样的问题,因为我想扩展这个问题:
有没有办法在活动上运行后台进程,更改活动并继续运行?(活动或片段,我将在未来使用片段。)
提前感谢您的帮助!
答案 0 :(得分:2)
最好的解决方案可能是服务。 关于服务的一篇非常好的文章,包括如何通过Intent或广播事件与后台服务进行通信,可以在http://www.vogella.com/tutorials/AndroidServices/article.html
找到。答案 1 :(得分:1)
这是一个使用Android应用程序的参考代码,Arduino控制机器人。您可以看到它的结构也是我在机器人中使用的结构。 AsynkTasks在这方面不是一个好选择。使用服务是长跑通信的好理念
https://code.google.com/p/mover-bot/
这是Android控制机器人的现场演示。
答案 2 :(得分:1)
您的情况的一个典型模型是使用:
要考虑的一个参考是here
答案 3 :(得分:1)
在Background中完成工作并将结果通知给UI线程。
浏览this以获取更详细的概述。
<强>的AsyncTask 强>
这是一个围绕Thread和Handler的助手类,用于制作线程并且易于使用。只需在后台执行任务并在UI线程中发布结果。
http://developer.android.com/reference/android/os/AsyncTask.html
<强>发强>
在java中使用线程的基本概念,创建自己的线程池执行任务并使用处理程序在UI线程中发布结果。主要用于当您的ui可见时需要更长时间运行任务时(用于简单的后台任务asynctask)。这需要一段时间来实施,但可以让您更好地控制任务管理。
https://developer.android.com/training/multiple-threads/create-threadpool.html
<强>服务强>
如果您有更长时间的运行任务,并且您希望您的ui独立于您的任务,则会使用服务。
在您的情况下,我希望您使用服务进行通信,并使用活页夹或广播管理器来反映用户界面的变化。