欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Activity的创建、生命周期

程序员文章站 2022-06-03 10:24:52
Activity是Android四大组件之一。一个Activity负责管理一个界面。 创建一个Activity: New -> Activity -> 选择要创建的Activity类型(一般我们选Empty/Basic Activity) AS会自动在AndroidManifest.xml文件中注册 ......

 

activity是android四大组件之一。一个activity负责管理一个界面。

 

创建一个activity:

new -> activity -> 选择要创建的activity类型(一般我们选empty/basic activity)

Activity的创建、生命周期

as会自动在androidmanifest.xml文件中注册新建的activity,不用我们手动注册。

 

 

 

 

activity的生命周期分为5种状态:

1、启动状态

启动状态很短,启动后便会进入运行状态。

 

2、运行状态

activity处于屏幕最前端,可见、有焦点,可与用户交互。

android系统会尽可能保持处于运行状态的activity的运行,如果内存不足,android会优先销毁栈底的activity,来保证运行状态的activity的运行。

 

3、暂停状态

activity对用户仍然可见,但它无法获取焦点,不会响应用户的操作。

例如:activity上覆盖了一个透明的或者非全屏的activity时,被覆盖的activity就处于暂停状态。

 

4、停止状态

activity完全不可见,但任然保留着当前状态和成员信息。

如果系统内存不足,停止状态的activity很容易被销毁。

 

5、销毁状态

activity被清理出内存。

 

 

 

 

activity生命周期对应的方法:

1、oncreate()    在创建activity时调用,做一些初始化设置。此方法用得很多。

2、onstart()    在activity即将可见时调用

3、onresume()  在activity获取焦点、开始可见时调用

4、onpause()  当activity被其它activity覆盖或锁屏时调用

5、onstop()    当activity对用户不可见时调用

6、ondestroy()     在activity销毁时调用

7、onstart()    在activity从停止状态再次启动时调用

 

当activity执行onpause()进入暂停状态,重新回到前台运行时会先调用onresume();

当activity执行onstop()进入停止状态不可见,重新回到前台运行时会先调用onrestart();

停止状态的activity很容易被销毁,内存不足时,暂停状态的activity也可能被销毁,如果暂停、停止状态的activity已被销毁,重新回到前台运行会先调用oncreate()。

 

 

 

 

在进行横竖屏切换时,会先销毁activity,再重建activity。

如果不希望横竖屏切换时销毁重建activity,可以在androidmanifest.xml的该activity中通过configchanges属性设置:

1 <activity
2             android:name=".activity2"
3             android:label="@string/title_activity_2"
4             android:theme="@style/apptheme.noactionbar"
5             android:configchanges="orientation|keyboardhidden|screensize">   <!-- 横竖屏切换时不销毁重建此activity-->
6 </activity>

 

 

如果希望某个界面一直处于横屏/竖屏状态,不随手机的晃动而改变,可以在androidmanifest.xml的该activity中通过 screenorientation  属性设置:

1 <activity
2             android:name=".activity2"
3             android:label="@string/title_activity_2"
4             android:theme="@style/apptheme.noactionbar"
5             android:screenorientation="portrait">   <!-- 一直处于竖屏状态-->
6 </activity>

竖屏是portrait,横屏是landscape。