Activity是Android应用中负责与用户交互的组件。
生命周期7 | 1、 一个最简单的完整的Activity生命周期:onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy; 2、 当另一个Activity启动时:第一个并没有Destroy 第一个Activity onPause()——>第二个Activity onCreate()——>onStart()——>onResume() ——>第一个Activity onStop(); 3、 当返回到第一个Activity时:第二个Destroy 第二个Activity onPause() ——> 第一个Activity onRestart()——>onStart()——>onResume() ——>第二个Activity onStop()——>onDestroy() 4、 只有一个Activity时, 有两个按键在影响Activity生命周期 此时如果按下Back键,系统返回到桌面,并依次执行A:onPause -> A:onStop -> A:onDestroy。 此时如果按下Home键(非长按),系统返回到桌面,并依次执行A:onPause -> A:onStop。由此可见,Back键和Home键主要区别在于是否会执行onDestroy。 5、 6、 |
屏幕旋转时的生命周期 | (参考configChanges) 1、 不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,横1竖2(切横屏时会执行一次,切竖屏时会执行两次); 2、 设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次,横、竖1; 3、 设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法 |
四种启动模式 | 1、在android里,有4种activity的启动模式,(是否位于栈顶新建,是否调用新建)分别为: ·standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。 ·singleTop: 如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。 ·singleTask: 会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。 ·singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。 这些启动模式可以在功能清单文件AndroidManifest.xml中进行设置,中的launchMode属性。 2、是否允许多个实例(参考启动模式) “standard”和”singleTop”可以被实例化多次,并且是可以存在于不同的task中;这种实例化时一个task可以包括一个activity的多个实例; “singleTask”和”singleInstance”则限制只生成一个实例,并且是task的根元素。
|