安卓横竖屏切换时不触发onCreate方法
本文由 小茗同学 发表于 2016-08-04 浏览(3940)
最后修改 2016-08-04 标签:横屏 竖屏 切换 触发 oncreate android

如题

默认情况下,当安卓应用横竖屏之间切换时,每次切换都会触发onCreate,如果你的应用是一个hybird应用,那体验惨爆了,刚刚还在一个二级页面,横屏一下立马又回到首页,所以我们必须想办法禁止这种行为。

方法很简单,针对AndroidManifest.xml中对应Activity增加设置android:configChanges="orientation|keyboardHidden|screenSize"

<activity
    android:name=".activity.WelcomeActivity"
    android:label="@string/app_name"
    android:configChanges="orientation|keyboardHidden|screenSize" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

有一点需要知道,Android4.0之前只需设置keyboardHidden|orientation即可,但是4.0以后需要设置keyboardHidden|orientation|screenSize,这一点切记,网上很多老的文章没有提到!

另外,如果你需要针对方向切换后做一些自定义处理,可以这样:

@Override
public void onConfigurationChanged(Configuration newConfig)
{
    super.onConfigurationChanged(newConfig);
    int currentOrientation = this.getResources().getConfiguration().orientation;
    if(currentOrientation == Configuration.ORIENTATION_LANDSCAPE)
    {
        // 如果是横屏,做相关处理
    }
    else if(currentOrientation == Configuration.ORIENTATION_PORTRAIT)
    {
        // 如果是竖屏,做相关处理
    }
}

参考

http://www.cnblogs.com/savagemorgan/archive/2013/01/24/2875586.html