首页 > 代码库 > 基础篇: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的启动模式,还有比较深入的知识,截止现阶段为止,对这方面的知识接触不多,所以在此先不做什么讨论,后期有更深入了解后再进行总结。