我目前正在尝试完成一个更大的应用程序的设计,该应用程序通过一个专用的无线网桥(一个使用CDC的USB主机设备)用于远程控制无线设备。
但现在我陷入了如何在活动、服务/维护服务和工作线程之间进行正确划分的困境……
应用程序将由以下基本原理组成:
-各种各样的gui屏幕当然都是活动的。我打算有一些线程来接收一些消息,并在这些消息接收时通过处理程序相应地更新gui。-对这种做法有何评论?
一种处理所有低级usb/cdc通信、消息序列化/反序列化以及通过队列将消息分发给应用程序的模块。这需要一个单独的线程。我不希望这个线程仅仅因为产生它的活动消失而被破坏——在我的书中,这个活动需要一个intentservice——对吧?
一些顺序播放机,将以定时方式控制无线设备。这些将从一个我的活动中触发,并且必须运行到结束,而不会因按下主按钮、启动其他活动等而停止。-这再次要求维护服务…..对吗?
一种状态模块,在接收到来自低级模块的消息时更新一些“全局”数据结构(可能是数据库)。在这里我很困惑…这可能只是我主要活动中的一个工作线程-或者我在看第三个intentservice?
在一个服务中包含所有内容,然后在需要的地方添加线程会更好吗?
很抱歉,对于上个世纪一直在编写非GUI后台任务的C++程序员来说,Android是很难的。
提前谢谢!!!!

最佳答案

对于子弹一和子弹二你是对的,服务是最好的方法。尤其是intentservice,它可以逐个处理从其他地方发送的作业。
如果您的服务应该只让一个单独处理消息/队列的特定线程保持活动状态(如我所理解的项目1),那么一个正常的服务就足够了。
对于第三项,这取决于这些更新是否必须在用户看不到应用程序处于活动状态时完成。如果是,也使用服务。
顺便说一下:线程不是绑定到特定的活动或服务,而是绑定到进程。如果此进程包含正在运行的服务,则其中的所有线程也将保持活动状态(由于特殊情况必须终止进程除外)。

07-24 09:36
查看更多