`
zcbbupt
  • 浏览: 60389 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于横竖屏切换activity重启的问题

阅读更多
摘自: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()处理。。。
唉,希望可以找到一个比较好的解决方案吧。
分享到:
评论

相关推荐

    android横竖屏切换不重启activity解决方案

    需要注意的是,虽然这种方式可以避免Activity重启,但处理横竖屏切换的所有逻辑都必须在`onConfigurationChanged()`中完成,包括更新布局、控件位置等。同时,如果应用程序涉及到键盘隐藏/显示的配置变化,还需要将`...

    Fragment的使用,隐藏显示以及androidPad横竖屏切换

    为了避免这种情况,可以在AndroidManifest.xml中为相应Activity设置`android:configChanges="orientation|screenSize"`,然后在Activity中覆盖onConfigurationChanged()方法,处理横竖屏切换。 ```xml <activity ...

    【Android每周专题】横竖屏切换

    在Android开发中,横竖屏切换是一个常见的需求,尤其对于那些需要根据屏幕方向提供不同界面布局的应用来说。本文将深入探讨Android系统中的横竖屏切换机制,并通过"OrientationSwitchDemo"这个示例代码来帮助理解。 ...

    Android 横竖屏切换

    Android 横竖屏切换是 Android 开发中的一种常见需求,通过利用 Android 系统每次屏幕切换会重启 Activity 的特性,在 OnCreat 处自动加载不同显示状态下的 layout。下面将详细介绍 Android 横竖屏切换的实现方法。 ...

    android横竖屏切换时候Activity的生命周期

    正确处理横竖屏切换时的Activity生命周期对于打造流畅且高效的Android应用至关重要。开发者需要理解系统在不同情况下的生命周期调用顺序,并通过合理的方法来处理Activity状态的保存与恢复,确保用户体验的连贯性和...

    android横竖屏切换和自适应屏幕

    5. **禁止横竖屏切换**:如果不想让用户在应用中切换横竖屏,可以在AndroidManifest.xml中针对特定Activity设置`android:screenOrientation="portrait"`或`android:screenOrientation="landscape"`。 **屏幕自适应*...

    解决Android手机屏幕横竖屏切换

    ### 解决Android手机屏幕横竖屏切换问题 在Android应用开发中,屏幕方向的变化是一个常见的需求,也是开发者经常需要处理的问题。当用户旋转设备时,Android系统默认会重启Activity,导致用户界面状态丢失,用户...

    android横竖屏切换[文].pdf

    总之,Android应用程序的横竖屏切换可以通过系统自动处理或手动控制来实现,关键在于理解屏幕方向改变对Activity的影响,并采取适当的策略来适应这种变化。正确处理横竖屏切换可以提升应用的用户体验,使其在各种...

    Android 销毁当前的Activity

    那么,如何让 Android 横竖屏切换时不销毁当前的 Activity 呢?答案就在于使用 `android:configChanges` 属性和 `onConfigurationChanged` 方法。 在 AndroidManifest.xml 文件中,我们可以在 Activity 元素中加入 ...

    Android项目 手机横竖屏.rar

    在横竖屏切换时,如果Activity被重建,需要确保用户状态的正确保存和恢复。可以使用`onSaveInstanceState(Bundle outState)`来保存临时数据,然后在`onCreate(Bundle savedInstanceState)`或`onRestoreInstanceState...

    AndroidWidget机器人电池插件

    1. **正确处理配置变更**:开发者可能使用了`configChanges`属性在AndroidManifest.xml中声明对屏幕方向的处理,以便在横竖屏切换时不重启Activity,而是手动处理布局变化。 2. **使用SavedInstanceState Bundle**...

    android屏幕的切换

    10. **用户体验考虑**:在设计应用时,要考虑横竖屏切换对用户体验的影响。某些应用可能更适合固定一种屏幕方向,比如阅读应用通常适合横屏以展示更多内容,而聊天应用则可能更适合竖屏以方便单手操作。 综上所述,...

    Android常用技巧.docx

    本文将详细介绍如何解决Android横竖屏切换带来的问题。 首先,针对布局问题,Android提供了多种方式来控制屏幕方向。在`AndroidManifest.xml`文件中,可以在指定的`activity`标签内添加`android:screenOrientation`...

    Android相机 解决三星bug版本

    (2) 三星的camera强制切换到横屏 导致Activity重启生命周期 (但是部分机型 配置 android:configChanges 也不能阻止横竖屏切换); 我的解决方法为 如果 activity 的销毁如果无法避免 那么在activity销毁之前调用 ...

    Android禁止横屏竖屏切换的有效方法

    以下是如何在Android中禁止横屏竖屏切换的有效方法: 首先,我们可以在`AndroidManifest.xml`文件中针对需要固定方向的Activity进行配置。通过在`<activity>`标签内添加`android:screenOrientation`属性,可以指定...

    Android 面试整理 最新

    1. 如果未设置`android:configChanges`,横竖屏切换会导致Activity重启,即会重新经历onCreate()等生命周期方法。 2. 设置`android:configChanges="orientation"`后,切换屏幕方向时,Activity不会重启,但会调用`...

    Android面试题精华全整理 -.doc

    以下是一些关于Android面试题的精华内容,涵盖了Activity、生命周期管理、Activity间跳转、横竖屏切换、Activity样式以及状态保存等多个关键知识点。 1. **Activity**:Activity是Android四大组件之一,它代表应用...

    Android 横竖屏处理的知识小结

    以便在不销毁Activity的情况下处理横竖屏切换,但这需要在AndroidManifest.xml中对应的Activity中添加`android:configChanges="orientation|screenSize"`,告诉系统不要默认重启Activity。 总之,Android应用中的横...

    张泽华Android面试题整理

    横竖屏切换时Activity的生命周期变化取决于`AndroidManifest.xml`中Activity配置的`android:configChanges`。如果不设置,系统会默认销毁并重建Activity;如果设置了`orientation|keyboardHidden`,则只调用`...

Global site tag (gtag.js) - Google Analytics