Android生命周期和启动模式

1、Android生命周期

         1.1、正常情况下的生命周期

                      1、onCreate()  Activtiy正在创建,做初始化,调用setContentView初始化布局资源

                      2、onRestart()  Activity被重新启动,这种情况一般是用户把Activtiy切回后台,之后又切回来

                      3、onStart()    Activity正在被启动,这时候Activtiy已经可见,但是还没有显示到前台

                      4、onResume()  Activity已经可见了,已经显示到前台

                      5、onPause()      Activtiy正在停止,紧接着会执行onStop,切在此阶段勿做耗时操作

                      6、onStop()    Activtiy正在被停止,可以做写微重量级的操作

                      7、onDestroy()   Activtiy已经被销毁,回收工作与资源释放

                    分几种情况:

                       1、当用户打开新的Activity切换到桌面,正常为onPause--onStop,如果新的Activtiy是透明的话,当前Activity不会执                      行onSop

                        2、当用户按下back键回退时候,onPause--onStop--onDestroy

         1.2、非正常情况下的生命周期

                      1、资源的相关的系统配置发生导致Activtiy被杀死并重新被创建

                          系统突然旋转屏幕,当系统配置发生改变的时候, 在默认情况下,比如当前Activity处于竖着的屏幕的时候,突然旋转,会导致Activtiy生命周期发生改变。当Activtiy在异常情况下终止的,所以系统会调用onSaveInstanceState来保存当前数据Activtiy,这个是在OnStop之前,在新建Activtiy的时候,在OnCreate方法会执行onRestoreInStanceState恢复数据。当正常情况下,Activity不会调用onSaveInstanceState。   

                               Android生命周期和启动模式_第1张图片            

     2、资源内存不足导致低优先级的Activtiy被杀死

           1、前台-->可见-->服务-->后台-->空  (优先级顺序,从高到低,当资源内存不足的情况下,系统会依照优先级顺序进行回收),但有时候一些后台任务如果脱离四大组件,很容易被杀死,所有我们可以在服务中来保持优先级,避免被杀死

2、Andorid启动模式

        2.1、标准模式(standard)

                        默认的启动模式,不管栈中是否有实例存在,每次调用都会新建一个

        2.2、栈顶模式  (singleTop)

                         栈顶复用,如果调用时栈顶是此Activity的实例,那么复用,否则在栈顶新建一个

        2.3、栈内模式   (singleTask)

                          如果栈内存在此Activtiy实例,则会清除此实例上面的所有实例。

        2.4、复用模式   (singleInstance)

                          全局单例模式,单独占用一个栈,是singleTask的加强版。具有singleTask的相关属性。此模式一般为系统中的应用,一般不会用到

        2.5、onNewIntent()方法

                          ActivityA已经启动过,处于当前应用的Activity堆栈中; 当ActivityA的LaunchMode为SingleTop时,如果ActivityA在栈顶,且现在要再启动ActivityA,这时会调用onNewIntent()方法 当ActivityA的LaunchMode为SingleInstance,SingleTask时,如果已经ActivityA已经在堆栈中,那么此时会调用onNewIntent()方法 当ActivityA的LaunchMode为Standard时,由于每次启动ActivityA都是启动新的实例,和原来启动的没关系,所以不会调用原来ActivityA的onNewIntent方法

3、Android IntentFilter的匹配规则

                          Intent分为显示跳转和隐式跳转,显式跳转比较简单,根据规则即可,所以这里主要说隐式跳转,

更多相关文章

  1. Android 之Service的使用及生命周期
  2. Android开发模式:MVP Vs MVVM
  3. Android源码阅读分析:Activity生命周期
  4. Android的布局和Intent笔记和常用实例
  5. Android设计模式系列--工厂方法模式
  6. 新书内容连载(2):Android Activity的生命周期
  7. Activity 的四种加载模式

随机推荐

  1. mysql 5.7.5 m15 winx64.zip安装教程
  2. MySQL 启动成功但未监听端口的解决方法
  3. MySQL因配置过大内存导致无法启动的解决
  4. MySQL关闭密码强度验证功能
  5. MySql忘记密码修改方式适应5.7以上版本
  6. linux配置mysql数据库远程连接失败的解决
  7. Mysql 5.7.9 shutdown 语法实例详解
  8. Centos6.9安装Mysql5.7.18步骤记录
  9. MySQL中查询、删除重复记录的方法大全
  10. mysql获取分组后每组的最大值实例详解