- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在尝试完成一个更大的应用程序的设计,该应用程序用于通过专有无线网桥(使用 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/
如何有效地设计一个C++模块化程序?如何学习? 最佳答案 对于初学者,您可能希望采取“暴力”过程: 1. 在一个文件中写一个简单的main函数。 2. 增加一些功能,先编译再测试。 3.重构(在谷歌中
前言 有人说现在记事类app这么多,市场这么卷,为什么还想做一个笔记类App? 一来,去年小孩刚出生,需要一个可以记录喂奶时间的app,发现市面上没有一款app能够在两步内简单记录一个时间,可能i
我正处于 Web 应用程序的设计阶段,该应用程序允许用户创建工作请求,并且工作人员可以针对这些请求投入时间。该应用程序还将为主管提供报告功能,以获取每日总计、报告,并说明花费的时间、“成本分配”。 我
前言:很多刚刚接触编程的人都不知道怎么下手编写程序,特别是学习了新的知识点,不知道有什么用,那么本文将以简单的存储结构及简单的运算,条件语句,分支语句,循环语句结合,带来一个双人对战版五子棋,这是一
我正在尝试通过 C++ 多线程解决网络流量问题。 给定一个网络(所有节点都由弧连接,每个弧连接2个且只有2个结束节点,一个是输入节点,另一个是输出节点,每个节点可以有多个输入弧和输出弧),每个节点需要
我有一个关于编程和文件的问题。 while(current!=NULL) { if(current->Id_Doctor!='\0') { current=current->next;
下面的‘C’语句执行什么操作? star = star ^ 0b00100100; (A) 切换变星的第 2 位和第 5 位。 (B) 清除变量星的第 2 位和第 5 位以外的所有位。 (C) 设置除
我写了下面的代码: #include int main() { int a, b; printf("Enter values of a and b\n"); scanf(" %d%d "
我正在将 C 代码编程到 PIC 板上。我的问题是如何让我的程序计算按下按钮(RB0)的时间。然后它会显示所花费的时间并将其显示在液晶显示屏上。以毫秒为单位计算。下面是到目前为止我的代码。 /
我是一名优秀的程序员,十分优秀!