【android studio学习】——Activity的生命周期

本文详细解读Android应用中Activity的生命周期状态,包括启动、运行、暂停、停止和销毁,并介绍关键回调方法及其触发条件。通过示例代码演示如何观察这些生命周期方法的调用。同时探讨横竖屏切换时的生命周期管理策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生命周期状态

Activity的生命周期是指Activity从创建到销毁的整个过程,这个过程一般分为五个状态。

1.启动状态

2.运行状态

Activity处于界面的最前端,他是可见,有焦点的,可以与用户交互的。
Activity处于运行状态时,Android会尽可能的保持这个状态,即使内存不足的情况,Android也会优先销毁栈底的Activity。

3.暂停状态

Activity对用户来说仍然可见,但是无法获取焦点,对用户对他的操作没有反应,此时它处于暂停状态。
如游戏充值中的支付小窗口。

4.停止状态

Activity完全不可见,它处于停止状态。

5.销毁状态

Activity将被清理出内存

生命周期方法

Activity的生命周期包含创建、可见、获取焦点、失去焦点、不可见、重新可见、销毁等环节,针对每一个环节Activity都定义了相关回调方法。

1.onCreate()
Activity创建时调用,进性初始化设置。				Activity启动,不可见。
2.onStart()
Activity即将可见时调用,								Activity可见,不能进行交互
3.onResume()
Activity获取焦点时调用								Activity可见,可交互
4.onPause()
当前Activity被其他Activity覆盖或屏幕锁屏时调用			Activity暂停
5.onStop()
Activity停止,						Activity不可见,后台运行
6.onDestroy()
Activity销毁时调用
7.onRestart()
Activity从停止状态到再次启动时调用

在这里插入图片描述

用控制台查看运行方法

MainActivity.java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate ( savedInstanceState );
        setContentView ( R.layout.activity_main );
        Log.i ("MainActivity","调用onCreate");
    }
    @Override
    protected void onStart(){
        super.onStart ();
        Log.i ( "MainActivity","调用onStart" );
    }
    @Override
    protected void onResume(){
        super.onResume ();
        Log.i ( "MainActivity","调用onResume" );
    }
    @Override
    protected void onPause(){
        super.onPause ();
        Log.i ( "MainActivity","调用onPause" );
    }
    @Override
    protected void onStop(){
        super.onStop ();
        Log.i ( "MainActivity","调用onStop" );
    }
    @Override
    protected void onDestroy(){
        super.onDestroy ();
        Log.i ( "MainActivity","调用onDestroy" );
    }
    @Override
    protected void onRestart(){
        super.onRestart ();
        Log.i ( "MainActivity","调用onRestart" );
    }
}
横竖屏切换时的生命周期
过程
	当手机切换横竖屏的时候,会根据AndroidManifest.xml(清单文件)中Activity的configChanges属性值的
不同而调用相应生命周期的方法
	当没有设置configChanges属性值的时候,由竖屏切换到横屏需要用onPause()、onStop()、onDestroy()、
onCreate()、onStart()、onResume()的方法。
设置
	由上面的过程可知,横竖屏切换需要销毁前一个屏幕,这样对程序的使用有一定的影响,比如在输入用户
信息时,横竖屏切换会使数据丢失。

设置切换时不销毁

<activity android:name=".MainActivity"
		  android:configChanges="orientation|keyboardHidden">

如果不希望屏幕随手机一起晃动,可以在AndroidManifest.xml清单文件中设置screenOrientation的属性值

//竖屏:
android:screenOrientation="portrait"
//横屏:
android:screenOrientation="landscape"
### 如何在 Android Studio 中观察 Activity生命周期 为了有效监控 Android 应用中的 `Activity` 生命周期,可以采用多种方式。以下是几种常见的方法: #### 方法一:通过日志输出观察生命周期 可以在每个 `Activity` 的生命周期回调方法中添加日志输出语句,从而实时追踪其状态变化。具体做法如下: ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("Lifecycle", "onCreate called"); } @Override protected void onStart() { super.onStart(); Log.d("Lifecycle", "onStart called"); } @Override protected void onResume() { super.onResume(); Log.d("Lifecycle", "onResume called"); } @Override protected void onPause() { super.onPause(); Log.d("Lifecycle", "onPause called"); } @Override protected void onStop() { super.onStop(); Log.d("Lifecycle", "onStop called"); } @Override protected void onDestroy() { super.onDestroy(); Log.d("Lifecycle", "onDestroy called"); } ``` 上述代码会在每次触发对应生命周期事件时打印一条日志消息到控制台[^1]。 #### 方法二:利用 Android Studio Profiler 工具 Android Studio 提供了一个强大的性能分析工具——Profiler,它可以帮助开发者深入了解应用的行为和资源消耗情况。要使用此功能来监测 `Activity` 的生命周期,可按照以下步骤操作: 1. 启动目标设备上的应用。 2. 打开 **Android Studio** 并连接至正在运行的应用实例。 3. 转到菜单栏的 **View -> Tool Windows -> Profiler** 或点击右上角的 Profile 图标。 4. 在 Profiler 界面下选择需要监视的内容(如 CPU),然后启用 **Method Tracing** 功能以捕获特定时间段内的函数调用详情[^4]。 这种方法不仅限于查看简单的生命周期转换过程;还可以进一步挖掘潜在瓶颈所在之处以及优化方向。 #### 方法三:借助第三方库简化调试工作 除了手动编码外,还有许多优秀的开源项目可供选用,它们能自动完成大部分繁杂的任务并提供更加直观的结果展示形式。比如 Google 推荐使用的 [Timber](https://github.com/JakeWharton/timber),这是一个灵活的日志管理框架,支持自定义标签、优先级过滤等功能,在实际开发过程中非常实用。 --- ### 总结 综上所述,无论是传统意义上的打印日志还是现代化手段下的可视化平台辅助,都能很好地满足我们对于探索 Android 组件内部运作机制的需求。而掌握好这些技能也将成为每一位合格安卓工程师必备的基础素养之一[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值