【问题标题】:Difference between a process and service?流程和服务的区别?
【发布时间】:2015-01-24 22:32:00
【问题描述】:

我想知道android应用程序中的进程和服务有什么区别? 我尝试了很多关于这个主题的研究,但还没有弄清楚我的基础......请帮助?

【问题讨论】:

标签: android service process


【解决方案1】:

进程和服务是两个不同的东西:

什么是服务?

关于 Service 类的大部分困惑实际上都围绕着它不是什么:

  • 服务不是一个单独的进程。 Service 对象本身并不意味着它在自己的进程中运行;除非另有说明,否则它会在与其所属的应用程序相同的进程中运行。
  • 服务不是线程。它本身并不是一种脱离主线程工作的方法(以避免应用程序无响应错误)。

因此,Service 本身其实很简单,提供了两个主要功能:

  • 应用程序可以在后台告诉系统它想在后台执行的操作(即使用户没有直接与应用程序交互)。这对应于对 Context.startService() 的调用,它要求系统为服务安排工作,直到服务或其他人明确停止它为止。
  • 一种应用程序向其他应用程序公开其某些功能的工具。这对应于对 Context.bindService() 的调用,它允许与服务建立长期连接以便与之交互。

来源:http://developer.android.com/reference/android/app/Service.html

什么是过程

当一个应用程序组件启动并且该应用程序没有任何其他组件在运行时,Android 系统会为该应用程序启动一个新的 Linux 进程,并使用单线程执行。默认情况下,同一个应用程序的所有组件都运行在同一个进程和线程中(称为“主”线程)。如果应用程序组件启动并且已经存在该应用程序的进程(因为该应用程序的另一个组件存在),则该组件在该进程内启动并使用相同的执行线程。但是,您可以安排应用程序中的不同组件在单独的进程中运行,并且可以为任何进程创建额外的线程。

来源:http://developer.android.com/guide/components/processes-and-threads.html#Processes

【讨论】:

  • 那么对于具有多个服务的进程,这些服务可能不打算同时使用?
猜你喜欢
  • 2015-03-24
  • 2014-04-13
  • 2011-10-10
  • 1970-01-01
  • 2011-03-05
  • 2010-10-07
  • 2017-01-13
  • 2011-03-16
  • 2013-02-03
相关资源
最近更新 更多