### Android面试宝典:核心知识点解析 #### 一、Activity详解 **Activity**是Android四大组件之一,负责处理用户交互并展示UI界面。一个Activity通常对应一个屏幕的用户界面,通过`setContentView()`方法设置其要显示的布局。作为`Context`的子类,它还实现了`Window.Callback`和`KeyEvent.Callback`接口,使其能够处理与窗口相关的用户输入事件。在实际开发中,常见的Activity类型包括`ListActivity`、`PreferenceActivity`、`TabActivity`等,用于实现不同功能的界面展示。 #### 二、Activity的生命周期 生命周期是Activity从创建到销毁的过程,涉及多个关键方法: - `onCreate()`: Activity创建时调用,初始化操作在此进行。 - `onStart()`: Activity变为可见时调用,但可能未获得焦点。 - `onResume()`: Activity获取焦点并准备好接收用户输入时调用。 - `onPause()`: Activity失去焦点但仍在前台时调用。 - `onStop()`: Activity完全不可见时调用。 - `onDestroy()`: Activity即将被销毁时调用。 - `onRestart()`: Activity由不可见变为可见前调用,如果Activity从停止状态变为重新启动状态,则会调用此方法。 **注意**:当Activity因配置变化(如屏幕旋转)被销毁重建时,会调用`onSaveInstanceState()`方法来保存实例状态,以避免数据丢失。 #### 三、Activity间的跳转与回调 在两个Activity之间跳转时,源Activity会经历`onPause()`调用,目标Activity则依次经历`onCreate()`, `onStart()`, `onResume()`。如果目标Activity是透明或对话框样式,原Activity的`onStop()`可能不会被调用,因为它仍然可见。 #### 四、屏幕方向变化与Activity生命周期 屏幕方向变化时,Activity的生命周期受到`android:configChanges`属性的影响: - **未配置时**:切屏导致Activity被销毁并重建,依次调用`onPause()`, `onStop()`, `onDestroy()`, `onCreate()`, `onStart()`, `onResume()`。 - **配置为“orientation|keyboardHidden”时**:切屏不会导致Activity重建,仅调用`onConfigurationChanged()`方法,允许开发者调整布局适应新的屏幕方向。 #### 五、设置Activity为窗口样式 通过自定义样式,可以将Activity设置为窗口样式。例如,在`AndroidManifest.xml`中添加: ```xml <activity android:name=".YourActivity" android:theme="@style/FloatActivity"> </activity> ``` 其中`@style/FloatActivity`是指向预定义主题的引用,该主题应定义在`res/values/styles.xml`中,以实现特定的窗口样式。 #### 六、应对Activity被系统回收 在低内存情况下,非前台Activity可能会被系统回收。为防止数据丢失,应利用`onSaveInstanceState()`和`onCreate()`方法对状态进行保存和恢复。示例代码如下: ```java @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putLong("id", 1234567890); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { // 恢复保存的状态 } } ``` 通过以上步骤,可以有效管理Activity的状态,确保应用在各种情况下的稳定性和用户体验。这些知识点不仅涵盖了面试中常见的问题,也是日常开发中必须掌握的核心技能。
- zhangyeqingzyq2014-03-31很有帮助,多谢
- 廖徐大队2012-10-10挺全的,挺新的,看看挺好的
- 粉丝: 1
- 资源: 52
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助