我试图了解“任务”下的Android任务和活动,以进行调试(以及我的教育)。许多其他StackOverflow答案和Android文档以详细但抽象的方式解决了该问题。他们真的是什么?我的理论(可能不正确)如下:
(1)“任务”是多线程Linux 进程,而(2)活动是该进程中用于服务活动的线程。
这是准确的还是我在基地外?
UPDATE 8/21/19 到目前为止,大多数答案都没有解决我的问题。它们只是回显Android Doc中的抽象描述。我发现Android框架极不可能包含Linux内核中已经存在的流程管理功能,例如进程,pthread等。恕我直言,Android活动和任务是Linux函数的包装。我很确定理论上的(1)是正确的,但是我不确定(2)。有人真正了解这些抽象的含义吗?
答案 0 :(得分:0)
Task
是容纳Activities
的正义堆叠。同样,Activities
仅保留UI并成为该Stack的一部分。资源:
Tasks and the Back Stack (Android Development Patterns)
对Fragment
内部的Activities
相同。就像它们是Activity
堆栈的一部分一样,“活动”也是称为Task
(s)的堆栈的一部分。
当您按下概览按钮或主页按钮时,您看到的不是Activity
,而是顶部是最新的Task
的{{1}}。来源:
Single Activity, why , when and how.
所以回答您的问题:
这是准确的还是我在基地外?
这是在Linux中使用的概念,而不是与Android相关的特定概念(甚至Android是Linux)。如此不同的概念,相同的命名。
答案 1 :(得分:0)
活动不是线程。完全没有活动是UI的控制器。基本上,它是协调屏幕或工作流程的代码。它没有附加线程(但是,当框架调用某些函数时,可以保证某些函数可以在主线程上运行(并且您不应该直接调用它们))。
任务。 AsyncTask基本上是Thread的包装,具有在UI线程上运行的前置和后置功能(以及可选的UI定期更新消息)。
这是另一个任务,它只是一组活动,您可以使用“后退”按钮向后浏览。将其视为用户通过您的应用程序的路径。但是您将很少使用这个概念,它几乎是自动化的。