首页 > 代码库 > 基础篇:3.熟练掌握Activity的生命周期和使用方法

基础篇:3.熟练掌握Activity的生命周期和使用方法

1.Activity的生命周期

  只要谈到Activity的生命周期,就少不了会涉及到下面这张经典图:

从图中可以看出一个完整的Activity生命周期涉及了onCreate、onStart、onResume、onpause、onStop、onRestart、onDestroy这7个方法,根据这7个方法结合上图,可以将Activity生命周期大致分为以下几种情况:

  (1)启动Activity:系统调用onCreate---onStart---onResume,系统开始进入running状态。

  (2)暂停Activity:当当前Activity被其它Activity覆盖或者设备屏幕被锁定,系统将调用onPause方法。

  (3)恢复Activity:当Activity从被覆盖状态恢复或者解锁屏,系统调用onResume方法,Activity重新进入running状态。

  (4)停滞状态:当系统从当前Activity转到新的Activity或者用户按下home键,系统调用onPause---onStop进行停滞状态。

  (5)再次进入running状态:当系统后退回到次Activity,系统调用onRestart---onstart---onRsume再次进入running状态。

  (6)摧毁Activity:当用户退出Activity,系统调用onPause---onStop---onDestroy,销毁Activity。

以上这些都是里理论值,要想深入理解各种状态之间的转换,还得通过实践慢慢来体会。

2.Activity使用方法

  (1)属性

    Activity在系统中作为一个对象存在,因此也支持很多XML属性,下面对一些常用的属性进行介绍:

    android:label    显示的名称

    android:icon  显示的图标

    android:screenOrientation    指定横竖屏

    android:exported    是否允许被其它成宿调用

    android:process     运行时所在的线程名

    <intent-filter>      设置Activity作为程序入口,即程序启动时显示的的第一个Activity。

  (2)启动

    startActivity()用来启动单个Activity,语法格式如下:

startActivity(Intent intent)

    startActivities()用来同时启动多个Activity,语法格式如下:

startActivity(Intent[] intents)

  (3)传值

  两个Activity之间进行传值,常用startActivityForResult、putExtra、getExtra方法,常用格式如下:

intent.putExtra("变量名称","变量内容");startActivityForResult(intent,REQUEST_CODE);//必须携带一个请求标识//使用Bundle对象接收传递过来的内容Bundle bundle=intent.getExtras();String str=bundle.getString("变量名称");//解析Bundle对象intent.putExtra("返回值名称",“返回值内容”);setResult(RESULT_CODE,intent);//设置返回标识finish();//关闭当前Activity

  (4)启动模式

  启动模式设置:

<activity android:name=".MainActivity" android:launchMode="standard" />

  Activity共有四种启动模式:

    a)stanDard:模式启动模式,每次激活Activity时都会创建Acitivity并放入任务栈中,该模式为默认启动模式。

    b)singleTop:如果任务栈顶刚好存在该实例,则直接调用,否则将新建实例并放入栈顶(即使栈中已存在该实例)。

    c)singleTask:如果栈中存在该实例,则直接调用,并置于栈顶。

    d)singleInatance:在一个新栈中创建该实例,其它应用程序也可以共享该实例。

  关于Activity的启动模式,还有比较深入的知识,截止现阶段为止,对这方面的知识接触不多,所以在此先不做什么讨论,后期有更深入了解后再进行总结。