进程生命周期(Process Lifecycle)进程5个等级优先级别。理解性记忆。转换关系。apple iOS基于Unix。linux和Unix,进程的销毁是系统管理的。 1 foreground(...
进程生命周期(Process Lifecycle)
进程5个等级优先级别。
理解性记忆。转换关系。
apple iOS基于Unix。
linux和Unix,进程的销毁是系统管理的。
1 foreground(前台/端的,优先级最高,最重要)
正处于Activity Resume()状态
整处于bound服务交互的状态(activity和service正在交互)
正处于服务在前台运行的状态,startForeground()被调用。(资源不够,想关闭服务时,需要手动确认,不会直接关闭后台服务)
Service生命周期函数正在被执行,onCreate(),onStart(),onDestroy()
BroadcastReceiver正在执行onReceive()方法(正在接收系统消息)
杀死Foreground Process需要用户响应-因为这个安全优先级是最高的
2 visible
Activity不在前端显示,但也没有完全隐藏,能够看得见,比如弹出一个对话框,Input Method
一个bound到visible或者foreground的activity的service
(如输入法,半透明对话框出现时)
3 service
正在运行的,不在上述两种状态的service
(如较长时间的运算)
4 background
不可见状态的activity进程,onStop()被调用
5 empty
没有运行任何的components的进程,保留这个进程主要是为了缓存的需要。
(输入内容被存在缓存,通过空进程恢复数据)
一个service(可能)是被两种不同优先级进程启动的,优先考虑优先级较高的,认为这个进程是更高优先级的。
eg,demo,演示foreground和background
package manager 类 负责将manifest中的配置转换成类的实例?
android如何启动:package service远程服务,package manager加载manifest,找到launcher
Android进程等级(5个等级)
前台进程(Forground service)、Visible、service、background、empty
1、Foreground process:
优先级别最高
(1)正处于onResume状态
(2)正处于bind服务状态
(3)正处于服务在前台运行状态(调用startForeground(),使其处于前台进程)
(4)Service生命周期正在被执行(onCreate、onStart、onDestroy)
(5) Receiver正在执行onReceive()方法
2、Visible Process
当前的Activity不是最前端,但是还是可以看到过,比如弹出一个对话框或者输入法
3、Service Process
正在运行的,不在上述两种状态的Service
4、background process
如按home键,应用常驻在内存中
5、empty process
没有任何Compoents的进程,保留这个进程主要是为了缓存需要。
Android进程是如何启动的?
通过远程服务,packageService ,然后通过PackageManager
学员评论
Dingo妹2014-07-07
你感兴趣的课程