Android四大组件之Activity

开启新界面,获取返回值

  • startActivityForResult
  • setResult
  • onActivityResult

Activity的生命周期

什么是生命周期
对象从创建到被垃圾回收过程中一定会执行的

onStart方法在activity界面用户可见的时候调用
onStop方法在activity界面用户不能用的时候调用
onResume方法为获得焦点
onPause方法为失去焦点,暂停

生命周期的重要概念

  • entire lifetime

    完整生命周期
    onCreate – onStart – onResume – onPause – onStop – onDestory

  • visible lifetime

  • 可视生命周期

    onstart – onresume – onpause –onstop

  • foreground lifetime

  • 前台生命周期
    onresume – onpause

横竖屏切换的生命周期

  • 横竖屏朝向固定 android:srceenOrientaion=”portrait” landspace
  • 设置 android:configChanges=”keyboardHidden/screenSize/orientation”

任务栈

task stack
* task:一个应用程序一般包括多个activity,每个activity都是用来处理用户交互的一个任务
* stack: 栈,是一种特殊的数据结构,队列也是一种特殊的数据结构.

任务栈就是用来记录用户的操作的,记录的是activity打开的先后顺序,后打开的界面先关闭,如果整个任务栈里面打开的activity都被关闭了,就是应用程序被退出了

一个应用程序一般只有一个任务栈,但是也可能对应有多个任务栈

activity的启动模式

  • standard:标准的启动模式(如果不作说明,都是标准启动模式)

    默认应用场景

  • singleTop:单一顶部模式

    如果activity已经被开启,并且处于任务栈的栈顶,就不会创建新的activity,而是复用已经开启的activity.为了防止出现一些奇怪的用户体验,推荐使用这一模式.整个任务栈可以有多个activity实例存在
    应用场景:短信发送界面

  • singletask: 单一任务栈

    在整个任务栈里面只允许有一个当前activity的实例存在.
    如果要开启的activity在任务栈中已经存在,直接复用这个已经存在的activty,并且把在这个activity上面的所有其他的activity给清空

应用场景: 如果一个activity非常消耗内存和cpu资源,建议把这个activity做成singletask的模式.浏览器的browerActivity


  • singleInstance: 单一实例

整个手机操作系统只有一个实例存在,并且运行在自己的单独的任务栈里面
通话界面的activity

猜你喜欢

转载自blog.csdn.net/memory_of_the_wind/article/details/53193216