首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android中进程、活动、线程和任务的区别

Android中进程、活动、线程和任务的区别
EN

Stack Overflow用户
提问于 2017-06-20 11:01:23
回答 3查看 3.6K关注 0票数 3

上述各点之间有什么区别?我发现各种帖子很有帮助,但也很令人困惑。简而言之,根据我的理解,这就是我的观点:

  • 线程是共享相同资源的任务。
  • 进程是具有独立资源的任务。进程可以有多个线程。
  • 任务是正在执行的指令。
  • 这就是我困惑的地方。在android系统中,这三项活动是如何相关的。活动可以有多个任务,所以它必须类似于一个进程。但是,活动和过程之间有什么区别呢?此外,我在某个地方读到,任务是一堆活动。这让我很困惑。我还读到,所有的活动都运行在UI线程上,这只会使区别更加混乱。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-20 12:42:18

您应该区分进程&线程与活动与任务。他们甚至不属于同一类别。

让我们从最简单的一个开始,Task的。假设您没有谈论任何实际的类,即TimerTask,任务的基本概念如下。当用户第一次启动应用程序时,将创建一个新任务。您可以通过按下"OverviewButton“(由软件按钮的正方形表示)来看到这一点。(在Android5.0中,一个更高的任务将不会被释放,除非用户实际将其从概述屏幕上删除(左/右)。因此,任务实际上只是用户的一个高级抽象。正如您所提到的,任务有一个活动后台,它只是一个正常的堆栈,用于跟踪用户的“历史记录”。例如,您的应用程序被启动,您的MainActivity将位于堆栈的底部,用户输入一些值,然后继续进行一个新的活动。现在,这个新的活动高于上一个活动,用户可以在任何时候按下“后退”按钮--希望--随时返回到之前的活动。

现在对于 process &Thread的来说,安卓下的进程非常类似于linux,您的应用程序通常只能在一个进程内工作。如果您熟悉像C这样的语言,那么进程就会被OS分配到内存的某一部分,试图访问不属于您的进程的内存将导致“分割错误”。

正如您所说的,假设操作系统能够管理所需的开销,一个进程可能有任意数量的线程。一个进程至少会有一个线程,在android下这被称为或UI-Thread。线程,基本上,允许您并行地做一些工作。您很可能需要使用它们,例如,在执行网络操作时。

现在对于Activities来说,它们与多线程没有直接关系。当前的“活动活动”是在UI-线程上运行的活动。因此,它的所有回调都将在UI-Thread上运行,除非有明确的文档说明没有。活动是android框架使用的一种抽象,它存在于一个与进程&线程( Thread )根本不同的层次上,您可以从任意线程调用活动中定义的方法。

票数 8
EN

Stack Overflow用户

发布于 2017-06-20 11:40:49

一个非常好的问题,根据我在android开发方面的一些经验,我想做出贡献。让我们从..。

过程

打开windows上的任务管理器来查看打开的应用程序吗?这些都是过程。在android上,当应用程序启动时,会打开一个新的进程,并给出内存分配等。活动类、导入和线程都在Android系统中形成一个进程。有时,当应用程序崩溃时,您会看到一条错误消息,“不幸的是,com.android.bakerapp已经停止了”。这意味着错误会导致线程、导入、活动的整个进程关闭。基本上,进程是应用程序的一部分,或者是运行中的应用程序的一部分。

活性

活动是所有android应用程序的核心和灵魂,所有线程、首选项、视图和布局都由android活动类打开。容器对象保存视图、传递信息并运行线程。活动通过意图、类中的对象和方法相互通信。Activity是一段代码,它创建和通信用户界面以及用户所看到和使用的一切。它用于创建线程。下文将讨论这一点。

线程

这个很简单,一个线程基本上是一个完成某件事情的过程,它在工作后生死存亡。假设您有一个在屏幕上查看图片的活动,并且希望使用库自动将您的应用程序主题颜色设置为图片上最常见的颜色。

在用户不知道并混淆负责将图片加载到网站视图的主线程的情况下,最好的方法是使用异步任务(在后台运行的东西)打开线程,这是线程的一个示例。

因此,线程基本上是要完成的任务的生命周期,它可以是连续的(主要的活动视图和列表视图),也可以是短的(在图片中找到主导颜色),也可以是有趣的多任务处理(在WhatsApp上与女友聊天的同时从小组聊天中下载图片)。

线程是所有活动和进程中最重要的部分,可以发送、接收和处理数据。

活动不能没有线程,因为setContentview和UI本身只是另一个线程,您可以在一个活动中有多个线程。

快乐编码!

https://developer.android.com/guide/components/processes-and-threads.html

票数 2
EN

Stack Overflow用户

发布于 2021-05-08 20:06:24

我知道这是旧的,但您也可以说线程是执行代码的最小单位。线程计划在CPU上运行。进程可以有一个或多个线程。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44651226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档