蓝盟IT小贴士,来喽!
一、任务和任务堆栈的详细情况
1、安卓上的任务详细情况
任务是指在执行特定工作时与用户进行交互的一系列活动。 这些活动按照各自的打开顺序排列在堆栈中,即返回堆栈中。 设备的主画面是大多数任务的起点。 当用户触摸APP启动程序的图标(或主屏幕上的快捷方式)时,APP启动程序的任务将出现在前台。 如果APP应用程序中不存在任务(APP应用程序最近未使用),则将创建一个新任务,并且APP应用程序的“主”(master )活动将作为堆栈中的根活动打开
如果当前活动启动另一个活动,则该新活动将被推送到堆栈的顶部,成为焦点。 上一个活动留在堆栈中,但已停止。 当Activity停止时,将保持用户界面的当前状态。 当用户按下“后退”按钮时,当前的Activity会从堆栈的顶部弹出,Activity被放弃,上一个Activity重新开始执行,返回到UI的上一个状态。 堆栈中的Activity从不重新定位,只需推送或弹出堆栈。 在当前活动启动时推送堆栈。 用户使用“后退”按钮在退出时弹出堆栈。 因此,返回堆栈将在“后进先出”对象结构中执行
任务是有机的,用户开始新的任务,或者通过“主页”按钮移动到主画面,就可以移动到“后台”。 在后台,任务中的所有活动都将停止,但任务的返回堆栈不会更改。 也就是说,当发生另一个任务时,任务只是失去了焦点。 然后,任务可以返回到“前台”,用户可以返回到离开时的状态;
由于返回堆栈中的Activity从不重新定位,所以如果APP应用程序允许用户从多个Activity启动特定Activity,则不会将Activity的上一个实例放在顶部,而是该Activity的新因此,即使APP应用程序中的一个活动来自不同的任务,也可能被多次实例化。
二、任务堆栈
)1)程序打开后,会创建一个存储当前程序的activity的任务栈,所有的activity都属于一个任务栈。2 )任务堆栈中包含activity的集合,只有依次选择哪个activity与用户进行对话的:任务堆栈最上面的activity才能与用户进行对话。
(3)任务堆栈可以移动到后台,保持着各个activity的状态。 另外,要让用户有条不紊地列出这些任务,并且还不会丢失它们的状态信息。
4 )结束APP时:从堆栈中删除所有任务堆栈中的所有activity后,任务堆栈被放弃,程序结束。
)5)每次打开页面时,都会向任务堆栈添加Activity,只有在任务堆栈中的Activity全部清除了堆栈时,任务堆栈才会被放弃,程序结束。 这样没法使用,用户体验不好,必须多次点击返回才能退出程序。
)6)如果每次打开页面时都向任务堆栈添加Activity,则会导致数据冗余,重复数据过多,从而导致内存溢出问题(OOM )。
为了解决任务堆栈的缺点,我们引入了启动模式。
“启动模式”(launchMode )在多个活动跳跃的过程中起着重要的作用,包括是否生成新的活动实例、是否重用现有的活动实例以及其他活动实例
活动有标准、单任务、单任务和单实例启动模式的概念;
文/上海蓝盟 IT外包专家