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生命周期和启动模式            

     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分为显示跳转和隐式跳转,显式跳转比较简单,根据规则即可,所以这里主要说隐式跳转,

相关文章:

  • 2021-11-18
  • 2021-07-05
  • 2021-04-27
  • 2021-04-19
  • 2021-11-26
  • 2021-11-02
  • 2021-05-25
猜你喜欢
  • 2021-05-12
  • 2021-09-09
  • 2021-05-11
  • 2022-12-23
  • 2022-01-14
相关资源
相似解决方案