Android的四大组件——Activity

来源:互联网 发布:企业java开发工具 编辑:程序博客网 时间:2024/05/22 06:39

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时,切屏会重新调用各个生命周期,12(切横屏时会执行一次,切竖屏时会执行两次);

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的根元素。

 


0 0
原创粉丝点击