"Android面试知识点整理"
在Android应用开发中,面试常常会涉及到核心概念和组件,尤其是Activity。Activity是Android四大组件(Activity、Service、BroadcastReceiver、ContentProvider)之一,代表用户界面的一个实例。通常,每个与用户交互的屏幕对应一个Activity。在Activity中,我们通过`setContentView()`方法来设定要展示的布局。由于Activity继承自Context,并实现了Window.Callback和KeyEvent.Callback接口,因此它能够处理窗口事件和按键事件。例如,我们可以在按钮上设置点击监听器:
```java
button.setOnClickListener {
// 监听器代码
}
```
常见的Activity类型包括ListActivity、PreferenceActivity和TabActivity等,它们提供了不同类型的用户交互方式。为了减少重复代码,开发者经常自定义一个BaseActivity,作为其他Activity的基类,将共通的功能封装在其中。
接下来,让我们深入探讨Activity的生命周期。Activity的生命周期是指从创建到销毁的过程,这个过程中的关键节点是系统调用的一系列回调方法。这些方法包括:
- `onCreate()`: Activity首次创建时调用,用于初始化。
- `onDestroy()`: Activity销毁前调用,释放资源。
- `onStop()`: Activity不再可见时调用,可能进入后台或被完全停止。
- `onStart()`: Activity变得可见但未获得焦点时调用。
- `onResume()`: Activity获得焦点并可与用户交互时调用。
- `onPause()`: Activity失去焦点但仍部分可见时调用,如打开新Activity或显示Dialog。
值得注意的是,`onRestart()`方法在Activity被`onStop()`后,但未被`onDestroy()`,当再次启动此Activity时调用,而不是重新创建(不会调用`onCreate()`)。如果Activity被彻底销毁,那么重新启动时会调用`onCreate()`。
在实际项目中,比如豆瓣客户端,我们可能希望用户每次打开界面时都能看到最新数据。这时,我们可以把数据刷新操作放在`onStart()`方法中,确保`fillData()`等更新逻辑会在Activity重新变得可见时执行。
在处理多媒体播放时,如遇到来电中断,我们需要保存播放状态。在`onStop()`方法中,我们将视频声音设为0并暂停播放,记录当前播放位置。当Activity再次启动(`onStart()`)时,根据保存的状态恢复现场,继续播放。`MediaPlayer`对象提供了控制播放的方法,如`pause()`和`start()`。
另外,Activity还有两个不太常见的方法`onPostCreate()`和`onPostResume()`,它们分别在`onCreate()`和`onResume()`之后调用,用于进一步的初始化工作和确保UI线程完成绘制后再进行其他操作。
了解和掌握Activity的生命周期以及如何在不同回调中处理逻辑,是每个Android开发者必备的技能。在面试中,能够结合实际项目经验和具体场景来阐述这些概念,将使你的回答更具说服力。