Activity学习

来源:互联网 发布:模拟退火算法实例ppt 编辑:程序博客网 时间:2024/05/17 09:30

Activity:

一:

   就是所谓的用户界面,系统会把你启动的每个activity放在一个堆栈中,最上面的那个activity就是你目前正在和用户进行体验的那个,当启动一个新的activity时候,前一个被压入堆栈中,当你按下back键的时候,又会返回到上一个activity中,

   堆栈中其实保存的是对象,如果有多个同一个activity的子类存在的话,堆栈会为每个实例单独开辟一个入口,堆栈中的activity不会重排,只会压入和弹出。

   任务中的所有activity是作为一个整体进行在前后台之间移动,按下back键的时候,返回的是当前activity的上一个activity。

    activity元素中的launchmode属性可以设置四种不同的加载模式:

   

二:四种模式: standard(默认的);singleTop;singleTask;singleInstance四种模式

    standard(默认的);singleTop: 他们可以归属于多个任务,一个任务可以同时拥有多个实例。

    singleTask;singleInstance:只能有一个实例,同一设备中同一时间只能有一个任务的实例存在。

 

三:是否载入新的类实例来处理Intent:

    standard:对每一个新的Intent都会创建一个新的实例来进行相应,一个实例处理一个intent。

    singleTop:如果activity位于目前任务的最上面,则重用现在已经存在的activity来处理新的Intent;如果不是在最顶部,则会新创建一个activity来处理并压入堆栈中。

    比如有A-B-C-D在堆栈中,新来的是D类型的activity的话:对于standard模式则会是:A-B-C-D-D;对于singleTop模式来说则是:A-B-C-D

    比如有A-B-C-D在堆栈中,新来的是B类型的activity的话:两种模式都会是:A-B-C-D-B

 

四:清理堆栈

      如果一个用户离开一个任务很长一段时间,系统会清理该任务中除了根activity之外的所有activity。

      alwaysRetainTaskState:标记在根activity中为true时,任务将保存一段时间。

      clearTaskOnLaunch:标记在根activity中为true时,任务的堆栈将会被清空,只留下根activity,哪怕只是离开一会儿。

      finishOnTaskLaunch:它仅作用于单个的activity,而不是整个Task,它可以清理掉任意一个activity,根activity也不例外。