黑马程序员安卓教程:服务和进程的简介

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

服务和进程的几个相关概念
1.服务的简介
服务的概念最早是由微软提出来的,它可以理解为:有那么一类应用程序,能够为各种用户(包括本地用户和远程用户)所用的,拥有用户授权级进行管理能力,并且不论用户是否物理的与正在运行该应用程序的计算机相连都能正常执行,这就是所谓的服务了。

在Windows系统下:服务就是没有界面长期运行在后台的程序。

开始→控制面板→管理工具→服务,便能打开服务的管理页面,如图1-1所示:
图1-1所示
图1-1即是在Windows系统下后台服务列表,我们可以手动的开启,暂停一个服务。

在Android系统下:服务作为应用程序的一个组件,可以理解为长期后台运行的没有界面的Activity。

2.进程的简介
进程的概念是60年代初由麻省理工学院MULTICS系统和IBM公司的CTSS/360系统引入的。

进程的定义有多种,但我们务必知道的是:
进程是操作系统中运行的程序,它是操作系统资源管理的最小单位。

进程是一个活动的实体,它不同于应用程序而是程序的一次执行过程。

3.应用程序的简介
应用程序是指令的集合。

其本身没有任何运行的含义,是一个静态的概念。

程序可以作为一种软件资料长期存在。

启动模拟器,在DDMS的devices视图中可以看到运行在该模拟器上的所有进程,当手动打开模拟器桌面上的某一个应用时,可以看到devices进程列表中就会添加一条数据记录,效果如图1-2所示。

打开桌面
上“省电
助手”,
devices便
新增一条
进程记录
开启新的进程
图1-2所示
图1-2可知:当开启一个应用程序时,进程列表中便添加一条对应的进程记录。

点击“BACK”按键,退出当前打开的应用,效果如图1-3所示:
手”,
devices列

图1-3所示
图1-3可知:当点击“BACk”退出某一个应用时,这个应用所对应的进程仍然存在与于系统的进程列表中并没有被杀死。

通过以上操作,我们可以得出如下结论:
应用程序退出只代表任务栈清空了,但操作系统仍会保留该应用程序的进程。

✧进程是应用程序的载体。

Linux系统创建了一个进程(进程的ID标记:pid),这个进程负责运行
DVM,而Android应用程序运的java代码行在DVM虚拟机里。

✧我们知道Android中四大组件的组合就是一个应用程序,而一个应用程序对应多个进程。

如何理
解?下面我们通过一个案例来理解这一理论,编写一个Android工程命名为:“test”。

实现功能:点击按钮,打开百度的首页面。

关键代码如例1-1所示:
例1-1
运行程序,此时DDMS的进程列表中添加两条进程记录,效果如图1-4所示:


图1-4
图1-4可知:当启动Android工程“test”时,在进程列表中会添加进程记录“com.example.test”;当点击按键打开百度首页时,在进程列表中再添加一条记录“com.android.browser”。

这个实验证实了:一个应用程序可以对应多个进程。

4.进程的生命周期
在Android中,系统会尽量的长时间的保留每一个开启的进程,目的是为了在下一次开启这个应用的时候提高启动速度。

这种做法最终会导致内存不足,为了解决这个问题,系统会对这些进程按照优先级排列,当系统内存不足时便会按照优先级的高低回收这些进程。

下面是进程的优先级分类:Foreground process(前台进程):一个用户正在操作的应用程序,activity的onResume方法被执行了,用户可以获取焦点,可以点击相应的点击事件。

Visible process(可视进程):一个应用程序的UI界面,用户还可以看得到但却不能操作啦。

Service process(服务进程):应用程序没有界面,但是还有一个服务处于运行状态。

Background process(后台进程):应用程序没有服务处于运行状态,并且应用程序处于最小化(Activity 执行了onstop方法)。

Empty process(空进程):没有任何运行的组件,任务栈处于清空状态。

在这5种进程中,优先级由高到低进行了分类,前台进程的优先级最高,空进程的优先级最低,当系统资源不足会首先杀死空进程来节约系统资源。

相关文档
最新文档