Android四大组件之activity

public class Activity extends ApplicationContext { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); }

二、生命周期:

1、三种状态:

2、常见的七个方法:

oOnCreate :一个Activity的实例被启动时调用的第一个方法。一般情况下,我们都覆盖该方法作为应用程序的一个入口点,在这里做一些初始化数据、设置用户界面等工作。大多数情况下,我们都要在这里从xml中加载设计好的用户界面。

onStart():方法在onCreate()方法之后被调用,或者在Activity从Stop状态转换为Active状态时被调用。到这一步变成“用户可见”的状态;

onResume:变成和用户可见可交互的,(在Activity栈系统通过栈的方式管理这些Activity,即当前Activity在栈的最上端,运行 完弹出栈,则回到上一个Activity);

onPause:到这一步是可见但不可交互的,系统会停止动画等消耗CPU的事情。

onStop:变得不可见也不可交互,被下一个activity覆盖了。

onRestart:用户后退回到此Activity,系统会先调用方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。

onDestroy:这它是被结束时调用的最后一个方法,在这里一般做些释放资源,清理内存等工作onPause,onstop,onDestroy,三种状态下activity都有可能被系统kill掉.

onWindowFocusChanged:在Activity窗口获得或失去焦点时被调用,例如创建时首次呈现在用户面前;当前Activity被其他Activity覆盖;当前Activity转到其他Activity或按Home键回到主屏,自身退居后台;用户退出当前Activity。以上几种情况都会调用onWindowFocusChanged,并且当Activity被创建时是在onResume之后被调用,当Activity被覆盖或者退居后台或者当前Activity退出时,它是在onPause之后被调用,如图所示:

onSaveInstanceState:(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,此方法会被调用,无法保证什么时候发生,系统根据资源紧张程度去调度;(2)在用户改变屏幕方向时,此方法会被调用,系统先销毁当前的Activity,然后再重建一个新的,调用此方法时,可以保存一些临时数据;(3)在当前Activity跳转到其他Activity或者按Home键回到主屏,自身退居后台时,此方法会被调.用。 系统调用此方法是为了保存当前口窗各个View组件的状态。onSaveInstanceState的调用顺序是在onPause之前。

onRestoreInstanceState:(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,然后用户又回到了此Activity,此方法会被调用;(2)在用户改变屏幕方向时,重建的过程中,此方法会被调用。可以重写此方法,以便可以恢复一些临时数据。onRestoreInstanceState的调用顺序是在onStart之后。

3.常见操作函数执行的顺序

3.1..启动Activity: OnCreate ->onStart->onResume

3.2.跳转到其他Activity,或按下Home键回到主屏:onSaveInstanceState->onPause->onStop

3.3.从后台回到前台:onRestart->onStart->onResume

3.4弹出对话框或者锁屏:onSaveInstanceState->onPause

3.5在对话框的界面返回:onResume

3.6退出:onPause->onStop->onDestory

3.7屏幕翻转:onSaveInstanceState->onPause->onStop->onDestory->OnCreate ->onStart->onRestoreInstanceState->onResume(在AndroidManifest.xml中对指定的Activity设置android:screenOrientation="portrait",或者在onCreate方法中指定setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏)

3.8为了避免这样销毁重建的过程,在AndroidMainfest.xml中对OrientationActivity对应的<activity>配置android:configChanges="orientation",然后我们再测试一下,然后做了3次的旋转。onConfigurationChanged->onConfigurationChanged->onConfigurationChanged

4.Activity 启动模式

Activity栈

standardsingleTopsingleTasksingleInstance

根据实际的需求为Activity设置对应的启动模式,从而可以避免创建大量重复的Activity

standard默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例,并放入任务栈中。。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。

singleTop

如果Activity在栈顶的时候,启动相同的不Activity,会创建新的实例,而会调用其onNewIntent方法。

两个Activity名为B1,B2。B1为standard,B2为singleTop。打开的顺序为B1->B2->B2,则实际的顺序为B1->B2。

打开的顺序为B1->B2->B1->B2,则实际的顺序,为B1->B2->B1->B2。

singleTask

只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity

destory掉并调用它的onNewIntent方法。

singleInstance

只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。

穷则思变,差则思勤!没有比人更高的山没有比脚更长的路。

Android四大组件之activity

相关文章:

你感兴趣的文章:

标签云: