android - 流程和服务的区别?

标签 android service process

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

最佳答案

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

什么是服务?

关于 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

关于android - 流程和服务的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27151826/

相关文章:

java - REST服务返回

java - 如何实现Java windows服务包装器YAJSW的停止和启动逻辑?

c# - 如何使用 C# 结束进程

java - 我将我的网站转换为应用程序,它在 AVD 中正常工作,但在我的手机中不起作用

android - 按下后退按钮时,相同的 Activity 再次重新加载

android - 在哪里放置 notifyDataSetChanged();在 customAdapter 中,因此 listView 不会在滚动时丢失数据

java - 当 fragment 处于​​恢复状态时,如果条件为真,它将返回到创建 View

android - 在另一个应用程序中使用应用程序服务

Linux进程内存方案

java - Java如何找到一个进程的程序和相关的dll?