当前位置: 首页 > news >正文

《Android 应用开发基础教程》——第二章:Activity 与生命周期详解

目录

第二章:Activity 与生命周期详解

2.1 什么是 Activity?

作用:

2.2 创建一个 Activity

示例代码

Manifest 注册:

2.3 Activity 生命周期(Life Cycle)

生命周期图解:

2.4 生命周期代码示例(带日志)

2.5 生命周期应用场景

2.6 Activity 的跳转

2.7 Activity 与 Back Stack(返回栈)

2.8 小结

习题答案

 

1. Activity 生命周期的 7 个核心方法

2. 什么情况下会触发 onRestart()?

3. 如何从 A 页面跳转到 B 页面?代码示例

示例代码:

详细步骤:

带参数跳转示例:

4. 页面暂停播放音乐应该写在哪个生命周期函数中?

原因:

示例代码:

注意事项:


第二章:Activity 与生命周期详解

2.1 什么是 Activity?

Activity 是 Android 应用中的一个屏幕(界面)或用户交互窗口。每一个 Activity 通常对应一个应用功能界面,例如登录页、主页面、设置页等。

作用:
  • 用于用户界面展示和交互

  • 承载布局(UI)

  • 响应用户事件(点击、滑动等)


2.2 创建一个 Activity

每个 Activity 都需要:

  • 一个 Kotlin/Java 类,继承自 AppCompatActivity

  • 一个 XML 布局文件

  • AndroidManifest.xml 中进行注册

示例代码
// MainActivity.kt
class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)}
}

Manifest 注册:
<activity android:name=".MainActivity" />


2.3 Activity 生命周期(Life Cycle)

Android 会根据用户操作和系统状态,对 Activity 进行不同阶段的管理。

生命周期主要分为 7 个核心方法

方法名说明
onCreate()第一次创建时调用(初始化)
onStart()页面可见时调用
onResume()页面进入前台、可交互时调用
onPause()页面部分被遮挡,失去焦点时调用
onStop()页面完全不可见
onRestart()从停止状态重新启动
onDestroy()Activity 被销毁前调用
生命周期图解:

(建议记忆该顺序)

onCreate → onStart → onResume↓         ↑onRestart ← onStop ← onPause↓onDestroy

2.4 生命周期代码示例(带日志)

 
class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)Log.d("LifeCycle", "onCreate")}override fun onStart() {super.onStart()Log.d("LifeCycle", "onStart")}override fun onResume() {super.onResume()Log.d("LifeCycle", "onResume")}override fun onPause() {super.onPause()Log.d("LifeCycle", "onPause")}override fun onStop() {super.onStop()Log.d("LifeCycle", "onStop")}override fun onRestart() {super.onRestart()Log.d("LifeCycle", "onRestart")}override fun onDestroy() {super.onDestroy()Log.d("LifeCycle", "onDestroy")}
}

打开 Android Studio 的 Logcat 面板,你可以看到 Activity 的生命周期变化日志。


2.5 生命周期应用场景

方法实际应用场景
onCreate()初始化变量、绑定事件、加载布局
onResume()开始动画、监听器、摄像头等资源
onPause()暂停动画、释放资源、防止泄露
onStop()保存数据状态,如保存草稿
onDestroy()彻底释放资源,如线程、数据库

2.6 Activity 的跳转

跳转页面使用 Intent

val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)

别忘了注册 SecondActivity:

<activity android:name=".SecondActivity" />


2.7 Activity 与 Back Stack(返回栈)

每启动一个新 Activity,系统会将它压入返回栈(Back Stack),按返回键时会依次出栈。

可以使用:

  • finish() 关闭当前 Activity

  • Intent.FLAG_ACTIVITY_CLEAR_TOP 控制跳转时清空栈


2.8 小结

  • Activity 是 Android 应用中的基础组成单位

  • 生命周期必须熟悉,防止内存泄露或资源浪费

  • 跳转、返回等行为均受生命周期控制

  • 可以通过 Log.d() 实际跟踪生命周期过程


📌 练习题

  1. 简述 Activity 生命周期的 7 个核心方法

  2. 什么情况下会触发 onRestart()

  3. 如何从 A 页面跳转到 B 页面?代码示例

  4. 页面暂停播放音乐应该写在哪个生命周期函数中?


下一章我们将进入实战部分:

第三章:布局管理与 UI 组件详解(LinearLayout、ConstraintLayout、Button、TextView 等)

PS:兄弟们私信我说,kotlin不习惯,那么从第三章开始,我将采用java代码展示示例代码。咱就是说,主打一个宠粉~~~


习题答案

1. Activity 生命周期的 7 个核心方法

Android 的 Activity 生命周期包含以下 7 个核心回调方法,它们在不同状态下被系统调用:

  1. onCreate()

    • 当 Activity 第一次创建时调用。
    • 用于初始化操作,例如设置布局、绑定数据等。
  2. onStart()

    • 当 Activity 即将变为可见状态时调用。
    • 此时用户还不能与 Activity 交互。
  3. onResume()

    • 当 Activity 获得焦点并进入前台时调用。
    • 用户可以与 Activity 交互。
  4. onPause()

    • 当 Activity 失去焦点但仍部分可见时调用(如弹出对话框)。
    • 通常用于暂停耗资源的操作(如音乐播放)。
  5. onStop()

    • 当 Activity 完全不可见时调用。
    • 例如跳转到另一个 Activity 或按下 Home 键。
  6. onRestart()

    • 当 Activity 从停止状态重新启动时调用。
    • 在 onStart() 之前调用。
  7. onDestroy()

    • 当 Activity 被销毁时调用。
    • 用于释放资源或清理操作。

2. 什么情况下会触发 onRestart()

onRestart() 方法会在以下情况下被触发:

  • 当一个处于停止状态(调用了 onStop())的 Activity 被重新启动时。
  • 典型场景:
    • 用户按下 Home 键离开应用后,又通过最近任务列表返回到该 Activity。
    • 用户从其他 Activity 返回到当前 Activity。

生命周期流程为:onRestart()onStart()onResume()


3. 如何从 A 页面跳转到 B 页面?代码示例

从 A 页面跳转到 B 页面可以使用 Intent 实现。下面是代码示例:

示例代码:
// 在 A 页面中跳转到 B 页面
Intent intent = new Intent(AActivity.this, BActivity.class);
startActivity(intent);
详细步骤:
  1. 确保 B 页面(BActivity)已经在 AndroidManifest.xml 中注册:

    <activity android:name=".BActivity" />
  2. 在 A 页面中,通过 Intent 指定目标 Activity,并调用 startActivity() 方法完成跳转。

带参数跳转示例:

如果我们需要传递数据到 B 页面的话,可以在 Intent 中添加额外信息:

Intent intent = new Intent(AActivity.this, BActivity.class);
intent.putExtra("key", "Hello from A");
startActivity(intent);

在 B 页面中接收数据:

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_b);Intent intent = getIntent();String message = intent.getStringExtra("key");// 使用接收到的数据
}

4. 页面暂停播放音乐应该写在哪个生命周期函数中?

当页面暂停时(例如用户切换到其他页面或按下 Home 键),应该暂停播放音乐。这个操作就应该写在 onPause() 方法中。

原因:
  • onPause() 是在 Activity 失去焦点时调用的,此时用户可能无法与当前页面交互。
  • 这是最适合暂停耗资源操作(如音乐播放)的地方。
示例代码:
@Override
protected void onPause() {super.onPause();// 暂停音乐播放if (mediaPlayer != null && mediaPlayer.isPlaying()) {mediaPlayer.pause();}
}@Override
protected void onResume() {super.onResume();// 恢复音乐播放if (mediaPlayer != null && !mediaPlayer.isPlaying()) {mediaPlayer.start();}
}
注意事项:
  • 如果音乐是全局播放(如后台播放),需要考虑使用 Service 来管理播放逻辑。
  • 在 onDestroy() 中记得释放资源,避免内存泄漏:
    @Override
    protected void onDestroy() {super.onDestroy();if (mediaPlayer != null) {mediaPlayer.release();mediaPlayer = null;}
    }

相关文章:

  • MATLAB 控制系统设计与仿真 - 38
  • ACM ICPC算法基础包括哪几类
  • Git命令归纳
  • 国产之光DeepSeek架构理解与应用分析04
  • 43.[前端开发-JavaScript高级]Day08-ES6-模板字符串-展开运算符-ES7~ES11
  • 免费多平台运行器,手机畅玩经典主机大作
  • 一个改善Entity Framework异常处理和错误信息的开源项目
  • 网络--应用层自定义协议与序列化
  • 捋一遍Leetcode【hot100】的二叉树专题
  • leetcode0113. 路径总和 II - medium
  • 6.8 Python定时任务实战:APScheduler+Cron实现每日/每周自动化调度
  • 重读《人件》Peopleware -(7)Ⅰ管理人力资源Ⅵ-莱特瑞尔 Laetrile
  • 3. 在 2节的基础上 ,实现launch文件简单编写
  • 遨游科普:防爆平板是指什么?有哪些应用场景?
  • 【EDA软件】【设计约束和分析操作方法】
  • ai学习中收藏网址【1】
  • Python学习之Seaborn
  • Redis 的持久化机制(RDB, AOF)对微服务的数据一致性和恢复性有何影响?如何选择?
  • CiteULike 数据集介绍与下载指南
  • docker底层原理
  • 影子调查丨义门陈遗址建筑被“没收”风波
  • 林诗栋4比1战胜梁靖崑,晋级世界杯男单决赛将和雨果争冠
  • 贝壳CEO拟捐赠价值4.68亿港元股份:用于行业人员医疗福利及应届生租客帮扶
  • 海基会副董事长罗文嘉妄称“大陆经济像一潭死水”,国台办回应
  • 南大全球招聘医学院院长,提供有竞争力的薪酬和科研启动经费