Android activity销毁与横竖屏切换处理策略

4星 · 超过85%的资源 需积分: 50 62 下载量 146 浏览量 更新于2024-09-21 4 收藏 21KB DOCX 举报
在Android开发中,有时我们需要确保当设备横竖屏切换或者键盘状态发生变化时,当前的Activity不会被销毁,而是保持活跃,以提供连续的用户体验。为了实现这一目标,开发者需要在AndroidManifest.xml文件中对相应的Activity进行特殊设置。 在`<activity>`标签中添加`android:configChanges="orientation|keyboardHidden"`属性,这意味着应用程序将主动处理屏幕方向(portrait to landscape 或反之)和键盘状态(隐藏或显示)的变化。这里的`orientation`表示屏幕方向,`keyboardHidden`则是指实体键盘的开关状态。这样一来,当这些变化发生时,系统不会自动调用`onDestroy()`方法来销毁Activity,而是触发`onConfigurationChanged()`方法。 `onConfigurationChanged(Configuration newConfig)`是一个重写的方法,它属于`android.content.res.Configuration`包,当设备配置信息发生改变时,系统会调用它。在这个方法中,你可以检查新配置,例如判断屏幕方向是否已变: ```java @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // 检测屏幕的方向 if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { // 处理横屏逻辑 } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { // 处理竖屏逻辑 } // 对于键盘状态变化,可以根据InputMethodManager的状态进行相应操作 InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); if (imm.isKeyboardShown(this)) { // 键盘打开 } else { // 键盘关闭 } } ``` 通过这种方式,即使设备配置发生了变化,如屏幕方向或键盘状态,当前的Activity仍然可以保持活跃,并根据新的配置调整其布局和行为。这是在需要持续交互或者避免频繁重建Activity以节省性能的情况下非常有用的特性。然而,应当谨慎使用此策略,因为过多地控制配置变化可能会导致资源消耗增加,特别是对于动画和数据同步这类需要重新加载的内容。