2017-06-20 166 views
0

以上所有内容之间的区别是什么? 我发现各种有用的帖子,但也很混乱。根据我的理解很短这是我想出高达:Android中进程,活动,线程和任务之间的区别

  • 的线程共享相同资源的任务
  • 进程是具有独立rersources任务。一个进程可以有 有多个线程。
  • 任务是正在执行的指令
  • 现在,这是我感到困惑的地方。在android中这些活动与所有 相关的活动如何?活动可以有多个任务,因此它必须是一个过程。但是,活动和过程之间有什么区别。此外,我在某处读到任务是一堆活动。它让我感到困惑。我也读过所有在UI线程上运行的活动,这使得区别变得更加混乱。

回答

1

你应该进程&主题与活动与任务之间进行区分。他们甚至不在同一类别中。

我们从最简单的任务的开始。假设你不是在讨论任何实际的类,即TimerTask,任务的基本概念如下。 当用户第一次启动您的应用程序时,会创建一个新的任务。你可以通过按下“OverviewButton”来看到这一点,用软件按钮的Square表示。 (在Android 5.0或更高版本上) 除非用户从概览屏幕中实际删除(向左/向右滑动),否则任务不会被处置。 因此,任务实际上只是用户的高级抽象。 就像你提到的那样,任务有一个活动backstack,这只是一个普通的堆栈,用于跟踪用户的“历史”。例如,您的应用程序已启动,您的MainActivity将位于堆栈的底部,用户输入一些值,然后继续执行新的活动。现在,这个新的活动高于上一个活动,用户可以随时按下“后退按钮”,随时返回上一个活动。

现在对于流程 & 线程的,Android的下的进程是非常相似的Linux进程,应用程序通常只被一个单一的过程中工作。如果您熟悉C这样的语言,则操作系统会为进程分配内存的某个部分,尝试访问不属于您的进程的内存将导致“分段错误”。

就像你说的,一个进程可能有多个线程,假设操作系统可以管理所需的开销。 一个进程将至少有一个线程,在android下这称为主线程或UI线程。线程,基本上,允许你做一些平行的工作。例如,在执行网络操作时,您很可能需要使用它们。

现在对于活动,它们与多线程没有直接关系。当前“活动活动”是在UI-Thread上运行的活动。所以它的所有回调都将在UI-Thread上运行,除非特别记录不要。 活动是android框架使用的抽象,它存在于与线程的进程完全不同的级别。你可以从你想要的任何线程中调用一个Activity中定义的方法。

1

一个非常好的问题,从我的Android开发小经验,我想贡献。让我们从开始..

流程

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

活动

活动是心脏和所有Android应用的灵魂,所有的线程,喜好,观点和布局由Android活动类打开。它是保存视图,传递信息并运行线程的容器对象。活动通过意图彼此沟通,类中的对象扩展和方法。 活动是创建和传达用户界面以及用户看到和使用的所有内容的一段代码。它用于创建线程。这在下面讨论。

线程

这一个是容易的,一个线程是基本完成某件事的过程,它的生活和工作后死亡。想象一下,您在屏幕上有一个可以查看图片的活动,并且您希望使用库自动将应用主题颜色设置为图片上最常见的颜色。

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

所以一个线程基本上是一个要完成的任务的生命周期,它可以是连续的(主要活动视图和列表视图)或短的(在图片中查找主色)或有趣和多任务处理(下载图片从同一时间聊天,同时与你的女朋友在WhatsApp上聊天)。

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

活动无法在没有线程的情况下工作,因为setContentview和UI本身只是另一个线程,您可以在一个活动中拥有多个线程。

快乐编码!

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

相关问题