android后端(Android 四大组件与应用生命周期)

android后端(Android 四大组件与应用生命周期)
Android 四大组件与应用生命周期

## 学习目标

理解 Activity、Service、BroadcastReceiver、ContentProvider 的职责,掌握应用生命周期与组件启动方式,是 Android 入门到进阶的关键一步。

## 核心知识点

- Activity 生命周期

- Fragment 生命周期

- Service 的启动与绑定

- BroadcastReceiver 的广播机制

- ContentProvider 的数据共享模型

- 任务栈与启动模式

## 技术介绍

Android 与普通桌面程序最大的差别之一,就是它是组件驱动型系统。页面、后台服务、广播响应、数据共享都不是自由散落的对象,而是由系统托管的组件。

这意味着你在写代码时必须始终考虑两个问题:

android后端(Android 四大组件与应用生命周期)

- 当前组件会在什么时候被创建和销毁

- 系统可能在什么场景下回收它

## 示例:Activity 生命周期日志

```kotlin

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

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 onDestroy() {

super.onDestroy()

Log.d("LifeCycle", "onDestroy")

}

}

```

通过切前后台、旋转屏幕、返回退出,你可以观察这些回调顺序。

## 示例:启动 Service

```kotlin

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

startService(intent)

```

如果你希望与 Service 建立交互,则更常见的是 `bindService()`。

## 示例:发送广播

```kotlin

val intent = Intent("com.example.ACTION_SYNC_DONE")

sendBroadcast(intent)

```

对应的接收器:

```kotlin

class SyncReceiver : BroadcastReceiver() {

override fun onReceive(context: Context?, intent: Intent?) {

Log.d("Receiver", "sync finished")

}

}

```

## 启动模式要点

- `standard`:默认模式

- `singleTop`:栈顶复用

- `singleTask`:任务栈内唯一

- `singleInstance`:独占任务栈

你不需要一开始就把所有模式背熟,但要理解它们解决的是“页面如何进栈、是否复用实例”这个问题。

## 常见问题

### 1. 为什么旋转屏幕后页面会重建

因为默认配置变化会触发 Activity 重建。你需要理解配置变化与状态恢复机制。

### 2. 为什么后台任务被系统杀掉

Android 对后台进程有严格管理。不要假设 Service 一定常驻。

### 3. Fragment 生命周期为什么比 Activity 更绕

因为 Fragment 同时受到宿主 Activity 和自身视图生命周期影响。

## 建议练习

- 写一个包含两个 Activity 的小项目,观察返回栈行为

- 写一个前台 Service 示例

- 写一个广播通知页面刷新的 demo

- 体验一次配置变化后状态恢复

## 阶段结果

学完这一章,你会对 Android 应用“如何活着、如何被系统管理”有基本认识。这是后续理解架构、性能和稳定性的基础。

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有