Android任务与活动-它们“真正”是什么?

时间:2019-08-19 14:45:47

标签: android android-activity task

我试图了解“任务”下的Android任务和活动,以进行调试(以及我的教育)。许多其他StackOverflow答案和Android文档以详细但抽象的方式解决了该问题。他们真的是什么?我的理论(可能不正确)如下:

(1)“任务”是多线程Linux 进程,而(2)活动是该进程中用于服务活动的线程

这是准确的还是我在基地外?

UPDATE 8/21/19 到目前为止,大多数答案都没有解决我的问题。它们只是回显Android Doc中的抽象描述。我发现Android框架极不可能包含Linux内核中已经存在的流程管理功能,例如进程,pthread等。恕我直言,Android活动和任务是Linux函数的包装。我很确定理论上的(1)是正确的,但是我不确定(2)。有人真正了解这些抽象的含义吗?

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定期更新消息)。

这是另一个任务,它只是一组活动,您可以使用“后退”按钮向后浏览。将其视为用户通过您的应用程序的路径。但是您将很少使用这个概念,它几乎是自动化的。