activity的启动模式 android采用Task来管理多个activity,当启动一个应用时,android会为应用创建Task,Task中存放的是activity的实例(Task为一个栈)
  • standard,标准模式
  1. 使用此模式启动目标activity时,android总会为目标activity创建一个新实例,并添加到当前的Task中
  2. 配置声明(在activity中):<activity>android: launchMode="standard"</activity>

  • singleTop,Task顶单例模式
  1. 使用此模式启动目标activity时,如果当前进程的Task栈顶是已存在的该activity实例,则android会利用该实例而不是创建一个新实例(仅检测栈顶,当栈顶不是该activity实例时会创建新实例
  2. 配置声明(在activity中):<activity>android: launchMode="singleTop"</activity>

  • singleTask,Task内单例模式
  1. 使用此模式启动目标activity时,如果当前进程的Task中已存在该activity实例,则android会复用该实例而不是创建一个新实例(这会将原栈顶的其它activity全部移除
  2. 配置声明(在activity中):<activity>android: launchMode="singleTask"</activity>

  • singleInstance,全局单例模式
  1. 使用此模式启动目标activity时,如果所有进程中的Task中存在该activity实例,则android会复用该实例而不创建新实例(保证了系统内无论有多少个Task都只有一个该activity的实例
  2. 此模式一般用于应用的activity对资源占用或消耗比较大的,如浏览器(所有应用复用一个浏览器而不是每次重新创建一个)
  3. 采用singleInstance模式加载activity所在的Task只包含该activity,而且总是位于Task栈顶
  4. 配置声明(在activity中):<activity>android: launchMode="singleInstance"</activity>

activity的生命周期
  • activity的运行状态:activity在屏幕使用(处于前台,可被看见)
  • activity的暂停状态activity在屏幕可见,但不处于活动状态,如新窗口弹出(此时activity部分可见,但不接受响应
  • activity的停止状态activity在屏幕不可见,如转用其它的应用(此时的activity完全不可见,但在后台暂存

  • void OnCreate(),当activity被创建时调用(每个activity只调用一次
  • void OnStart(),当activity开始运行时被调用(onCreate/onRestart后被调用)
  • void OnRestart(),当activity从停止状态回到运行状态时被调用(onStop后被调用)
  • void OnResume(),当activity从onStart之后被调用(onStart后被调用,创建与重新运行都会调用方法)
  • void OnPause(),当activity进入暂停状态时被调用(activity部分可见
  • void OnStop(),当activity进入停止状态时被调用(activity退出前台完全不可见
  • void OnDestroy(),当activity被销毁前被调用(onStop后被调用,系统回收内存)

activity的其它与生命周期相关的方法
  • onSaveInstanceState(),当activity从运行状态进入暂停状态或停止状态时该方法被调用;当系统主动销毁activity时该方法也会被调用(当用户主动销毁该activity则不会被调用
  • onRestoreInstanceState(),当activity被重新创建时,该方法会被调用
  • 以上方法一般用于保存暂时性的缓存数据

activity的部分配置
  • 默认情况下,当屏幕方向或键盘显示隐藏变化都会销毁当前的activity,创建新的activity;
  • 如果不希望重新创建activity实例,必须在菜单中配置activity中对应的属性
//配置属性(在activity中)<activity android:configChanges="keyboardHidden|orientation"></activity>


  • 当配置了变化的属性之后,属性改变时会调用activity的onConfigurationChanged()方法

更多相关文章

  1. HTML---Android与js交互实例
  2. Android之——模拟实现检测心率变化的应用实例
  3. Android的联通性---USB的从属模式(一)
  4. Android串口通信:串口读写实例
  5. Android实例剖析笔记(二)

随机推荐

  1. Android笔记1
  2. Android(安卓)创建自定义View 实现TopBar
  3. Android笔记 - 常见错误解决方法 | Andro
  4. Android启动脚本init.rc(2)
  5. Android(安卓)消息传递机制分析
  6. 详解 Android(安卓)的 Activity 组件
  7. Android(安卓)中如何获取editText文本信
  8. Android(安卓)- menu 相关
  9. Android(安卓)Canvas绘图详解(图文)
  10. android 按钮水波纹效果【背景色】