gpt4 book ai didi

Android应用程序设计: Right split between activities,服务和线程?

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:38 24 4
gpt4 key购买 nike

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

但现在我陷入了如何在 Activities、Services/IntentServices 和 worker threads 之间进行正确的划分......

应用程序将由这些基础知识组成: - 各种 GUI 屏幕,这些屏幕当然都是 Activity 。我打算有一些线程来接收一些消息并在接收到这些消息后通过处理程序相应地更新 GUI。 - 对该方法有何评论?

  • 处理所有低级 USB/CDC 通信、消息序列化/反序列化以及通过队列向应用程序发送消息的模块。这需要一个单独的线程。我不希望这个线程因为产生它的 Activity 消失而被销毁——在我的书中这需要一个 IntentService——对吧?

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

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

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

抱歉我的笨拙 - Android 对于上个世纪一直在编写非 GUI 后台任务的 C++ 程序员来说很难。

提前致谢!!!

最佳答案

对于第一点和第二点,您说得对,服务是最好的方法。 IntentService 尤其适合逐一处理从其他地方发送的作业。

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

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

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

关于Android应用程序设计: Right split between activities,服务和线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17189001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com