4

我目前正在尝试完成一个更大的应用程序的设计,该应用程序用于通过专有无线网桥(使用 CDC 的 USB 主机设备)远程控制无线设备。

但是现在我被困在如何在活动、服务/意图服务和工作线程之间进行正确的拆分.....

该应用程序将由以下基础构成: - 各种 GUI 屏幕,它们都将是活动。我打算有一些线程来接收一些消息并在这些消息接收时通过处理程序相应地更新 GUI。- 对这种方法有何评论?

  • 一个处理所有低级 USB/CDC 通信、消息序列化/反序列化和通过队列发送到应用程序的消息的模块。这需要一个单独的线程。我不希望这个线程仅仅因为产生它的活动消失而被破坏——在我的书中它需要一个 IntentService——对吗?

  • 一些以定时方式控制无线设备的序列播放器。这些将由我的一个活动触发,并且必须运行到最后而不会因按下主页按钮、启动其他活动等而停止。 - 这再次需要 IntentService .....对吗?

  • 状态模块在接收到来自低级模块的消息时更新一些“全局”数据结构(可能是数据库)。在这里我很困惑......这可能只是我主要活动中的一个工作线程 - 还是我在看第三个 IntentService?

将所有内容包含在一项服务中然后在需要的地方添加线程会更好吗?

对不起我的菜鸟 - 对于上个世纪一直在编写非 GUI 背景任务的 C++ 程序员来说,Android 很难。

提前致谢!!!

4

1 回答 1

0

对于项目符号一和二​​,您说得对,服务是最好的方法。IntentService 特别适合处理从其他地方发送的作业。

如果您的服务应该只让一个特定的线程保持活动状态,该线程自己处理消息/队列(据我所知,第一个),一个普通的服务可能就足够了。

对于第三条,这取决于是否必须在您的应用对用户不可见时进行这些更新。如果是这样,也请使用服务。

顺便说一句:线程不绑定到特定的活动或服务,而是绑定到进程。如果此进程包含正在运行的服务,则其中的所有线程也将保持活动状态(除非由于特殊情况必须终止该进程)。

于 2013-06-19T11:17:47.117 回答