进程,线程,应用程序,任务栈,启动模式

任务栈
什么是任务栈?
记录当前用户操作的行为的一种数据结构.(后进先出的数据结构)
最近打开的界面,先被关闭。
一个应用程序默认是只有一个任务栈,特殊情况下singleinstance会有多个任务栈


进程
android系统 ,应用程序退出和进程退出是两个不同的概念。
android系统为了让应用程序可以被快速的开启。所有的应用程序退出后,进程是不会退出的。
只有系统的内存空间严重不足的时候,才会把进程给回收。
点击图标-->linux创建进程-->dalvik虚拟机-->读取清单文件,加载activity。
android理解应用程序退出: 任务栈清空了。

线程
进程是操作系统分配内存空间的单位,每个进程的内存空间都是独立的。
线程是运行在进程里面。线程cpu执行的最小单位。如果进程挂了,线程也挂了。

应用程序 application
android应用程序每个应用程序都是运行在自己的sandbox(沙箱)。
理解成一组activity,service,content priovder broadcastreceiver的组合。

启动模式
有四种启动模式
*  standard 标准的启动模式。一个activity默认就是标准的启动模式。
开启新的activity,activity就会被创建出来,加入到任务栈的栈顶。
适用于绝大多数的应用场景。

singleTop 单一顶部启动模式。如果发现这个activity已经被启动了,并且在任务栈的栈顶,activity就不会别重新创建。
解决一个用户体验的问题。避免已经打开的界面重复的被打开多次。
浏览器添加到书签,singletop
在同一个任务栈里面可以有多个实例存在。

*  singleTask 单一任务栈启动模式。 开启新的activity的时候,会去检查任务栈里面是否有这个activity的实例存在,如果有实例存在,就直接清空这个实例上面的所有的 activity,复用这个已经存在的activity实例。
> 在同一个任务栈里面只有一个实例存在。
在什么时候使用singletask模式?
BrowserActivity 浏览器 开销(内存占用,cpu占用)非常大,singletask。保证在一个任务栈里面只有一个实例存在。
webkit 内核 页面。
   html解析器
  html渲染器
   css 渲染器
   javascript 执行引擎
如果一个activity的资源开销非常大,建议使用singletask的启动模式。
浏览器的activity使用的就是singletask的启动模式。

singleinstance 单一实例。类似于java中的单例模式,单态模式。在整个android手机操作系统里面只有一个activity的实例存在。
singleinstance启动模式的activity会运行在自己 单独的任务栈里面
如果你希望一个activity,在整个手机操作系统里面只有一个实例存在。配置singleinstance。
InCallScreen 通话的activity配置模式是singleinstance的。在整个手机操作系统里面只有他一个实例存在。


任务栈的细节

每个应用程序运行,系统都会分配一个新的任务栈。

问题:问系统里面有多少个任务栈存在?

有多少个应用程序正在运行(activity没有都被销毁,回桌面),就有几个任务栈。

任务栈的id是一个int类型的整数,自增长的id。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值