我目前正在尝试完成一个更大的应用程序的设计,该应用程序用于通过专用无线网桥(使用CDC的USB主机设备)远程控制无线设备。
但是现在我陷入了如何在Activities,Services / IntentServices和工作线程之间进行正确分割......
该应用程序将由以下基础构成: - 各种GUI屏幕,其中所有的活动都是活动。我打算有一些线程用于接收一些消息,并在这些消息接收时通过处理程序相应地更新GUI。 - 对该方法的任何评论?
一个模块,通过队列处理所有低级USB / CDC通信,消息序列化/反序列化和消息调度到应用程序。这需要一个单独的线程。我不希望这个线程被破坏只是因为产生它的活动消失了 - 在我的书中需要一个IntentService - 对吗?
一些将以定时方式控制无线设备的序列播放器。这些从一个我的活动被触发,必须运行到结束不停止由于家里按下按钮,启动其他活动等 - 这又要求一个IntentService .....权
状态模块在从低级模块接收消息时更新一些“全局”数据结构(可能是数据库)。在这里我感到困惑...在我的主要活动中,这只是一个工作线程 - 或者我正在寻找第三个IntentService?
将所有服务包含在一个服务中然后只需在需要的地方添加线程会更好吗?
对于我的高兴而言,对于那些在上个世纪编写非GUI背景任务的C ++程序员来说,Android很难。
提前致谢!!!
答案 0 :(得分:0)
对于第一和第二发子弹你是对的,服务是最好的方法。特别是IntentService可以逐个处理从其他地方发送的作业。
如果你的服务应该只保留一个特定的线程,它自己处理消息/队列(正如我所理解的那样),正常的服务就足够了。
对于子弹3,它取决于在您的应用对用户没有明显活动时必须完成这些更新。如果是这样,也可以使用服务。
顺便说一句:线程不是绑定到特定的活动或服务,而是绑定到进程。如果此进程包含正在运行的服务,则其中的所有线程也将保持活动状态(除非由于特殊情况而必须终止该进程)。