摘自:
http://nwhy.org/android-configchanges.html
这是hipak那边测试反馈回来的一个问题,说来惭愧,一直没注意到这个问题的存在。以为Power键就是onPause处理就完了,结果不是。
这里边google的设计或许也有点问题,在竖屏情况下也许是一样处理的,不过当你的app是横屏,那就要注意了。
每次Power键的时候,app是会强制回到竖屏状态的,并且会重新调用Activity的onCreate(),当然很多时候这不是我们想要的。所以就需要用到android:configChanges了,在配置文件里设置android:configChanges="keyboardHidden|orientation",这样在屏幕方向改变的时候就不会重新调用Activity的onCreate(),而是调用onConfigurationChanged(),然后在Activity里重载下
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
//横向
}else{
//竖向
}
}
一般就这么处理下就可以了,要命的是用到了SurfaceView,而SurfaceView和Thread的生命周期是不一样的,唉,这里要说一下Google提供的sample了,里边有bug!!
由于每次Power键的时候会调用SurfaceView的surfaceDestroyed(SurfaceHolder holder),但是回到app的时候又没有执行surfaceCreated(SurfaceHolder holder),于是就咯屁了~~
目前想到一个能解决的方案是在onConfigurationChanged(Configuration newConfig)里手动处理,surfaceDestroyed(SurfaceHolder holder)+urfaceCreated(SurfaceHolder holder)+pause()处理。。。
唉,希望可以找到一个比较好的解决方案吧。
分享到:
相关推荐
需要注意的是,虽然这种方式可以避免Activity重启,但处理横竖屏切换的所有逻辑都必须在`onConfigurationChanged()`中完成,包括更新布局、控件位置等。同时,如果应用程序涉及到键盘隐藏/显示的配置变化,还需要将`...
为了避免这种情况,可以在AndroidManifest.xml中为相应Activity设置`android:configChanges="orientation|screenSize"`,然后在Activity中覆盖onConfigurationChanged()方法,处理横竖屏切换。 ```xml <activity ...
在Android开发中,横竖屏切换是一个常见的需求,尤其对于那些需要根据屏幕方向提供不同界面布局的应用来说。本文将深入探讨Android系统中的横竖屏切换机制,并通过"OrientationSwitchDemo"这个示例代码来帮助理解。 ...
Android 横竖屏切换是 Android 开发中的一种常见需求,通过利用 Android 系统每次屏幕切换会重启 Activity 的特性,在 OnCreat 处自动加载不同显示状态下的 layout。下面将详细介绍 Android 横竖屏切换的实现方法。 ...
5. **禁止横竖屏切换**:如果不想让用户在应用中切换横竖屏,可以在AndroidManifest.xml中针对特定Activity设置`android:screenOrientation="portrait"`或`android:screenOrientation="landscape"`。 **屏幕自适应*...
### 解决Android手机屏幕横竖屏切换问题 在Android应用开发中,屏幕方向的变化是一个常见的需求,也是开发者经常需要处理的问题。当用户旋转设备时,Android系统默认会重启Activity,导致用户界面状态丢失,用户...
总之,Android应用程序的横竖屏切换可以通过系统自动处理或手动控制来实现,关键在于理解屏幕方向改变对Activity的影响,并采取适当的策略来适应这种变化。正确处理横竖屏切换可以提升应用的用户体验,使其在各种...
那么,如何让 Android 横竖屏切换时不销毁当前的 Activity 呢?答案就在于使用 `android:configChanges` 属性和 `onConfigurationChanged` 方法。 在 AndroidManifest.xml 文件中,我们可以在 Activity 元素中加入 ...
在横竖屏切换时,如果Activity被重建,需要确保用户状态的正确保存和恢复。可以使用`onSaveInstanceState(Bundle outState)`来保存临时数据,然后在`onCreate(Bundle savedInstanceState)`或`onRestoreInstanceState...
1. **正确处理配置变更**:开发者可能使用了`configChanges`属性在AndroidManifest.xml中声明对屏幕方向的处理,以便在横竖屏切换时不重启Activity,而是手动处理布局变化。 2. **使用SavedInstanceState Bundle**...
10. **用户体验考虑**:在设计应用时,要考虑横竖屏切换对用户体验的影响。某些应用可能更适合固定一种屏幕方向,比如阅读应用通常适合横屏以展示更多内容,而聊天应用则可能更适合竖屏以方便单手操作。 综上所述,...
本文将详细介绍如何解决Android横竖屏切换带来的问题。 首先,针对布局问题,Android提供了多种方式来控制屏幕方向。在`AndroidManifest.xml`文件中,可以在指定的`activity`标签内添加`android:screenOrientation`...
(2) 三星的camera强制切换到横屏 导致Activity重启生命周期 (但是部分机型 配置 android:configChanges 也不能阻止横竖屏切换); 我的解决方法为 如果 activity 的销毁如果无法避免 那么在activity销毁之前调用 ...
以下是如何在Android中禁止横屏竖屏切换的有效方法: 首先,我们可以在`AndroidManifest.xml`文件中针对需要固定方向的Activity进行配置。通过在`<activity>`标签内添加`android:screenOrientation`属性,可以指定...
以下是一些关于Android面试题的精华内容,涵盖了Activity、生命周期管理、Activity间跳转、横竖屏切换、Activity样式以及状态保存等多个关键知识点。 1. **Activity**:Activity是Android四大组件之一,它代表应用...
以便在不销毁Activity的情况下处理横竖屏切换,但这需要在AndroidManifest.xml中对应的Activity中添加`android:configChanges="orientation|screenSize"`,告诉系统不要默认重启Activity。 总之,Android应用中的横...
横竖屏切换时Activity的生命周期变化取决于`AndroidManifest.xml`中Activity配置的`android:configChanges`。如果不设置,系统会默认销毁并重建Activity;如果设置了`orientation|keyboardHidden`,则只调用`...
4. **横竖屏切换**:横竖屏切换时Activity生命周期的变化取决于清单文件中的`android:configChanges`设置。如果不设置,切屏会导致Activity重建。若设置为`orientation|keyboardHidden`,则只会执行`...