美文网首页Android
Android 横竖屏切换总结

Android 横竖屏切换总结

作者: 只为你驻足 | 来源:发表于2018-02-02 10:32 被阅读27次

首先,说一些常规的Activity的横竖屏切换的生命周期,如果没有在Manifests中特殊标明的话会重新生成一个全新的.

Activity,如果有在Manifests中声明configChange的话会走onConfigChange的回调,并且不会重新创建Activity, 其实是不建议使用这种方式来实现,因为除了横竖屏切换,语言切换等其他的case也有可能会导致Activity的重建,而开发者很有可能会遗漏某个,导致发生Acitivity重新创建,进而发生一些没有意料到的问题.

这个时候我们其实可以使用fragment来屏蔽这些Activity重建导致的问题,

方法就是,将UI的控件都放到一个fragment中,再将这个fragment附着在Activity上,并且在fragment中setRetainInstance为true,下面用一张图来描述一下这个方法的作用

如上图所示, setRetainInstance这个方法正是控制是否保留的方法,也就是说如果为true的话Activity还依然会重建,但是Fragment不会重建,但是会重新绘制界面,这就可以保证我们的数据是不会由于重建而丢失.并且fragment也含有onSaveInstanceState回调可以进行状态的保存,.但是需要注意的是fragment没有恢复的onRestoreInstanceState函数,通过上面的图,我们可以推测出onActivityCreated()中应该是可以区分,是由于Activity重绘之后被调用,还是新创建时被调用,

果然, 系统原生的DialogFragment中onActivityCreated方法中的就有这样的代码

if (savedInstanceState != null) {

    Bundle dialogState = savedInstanceState.getBundle(SAVED_DIALOG_STATE_TAG);

    if(dialogState != null) {

        mDialog.onRestoreInstanceState(dialogState);

    }

}

可见savedInstanceState 不为空时意味着是发生了重绘,需要恢复状态

另外一些系统的View已经为我们做了状态的保存,不需要我们在进行状态的保存

TextView 不会保存状态,看源码可知是由freezesText

这个属性来控制是否保存,如果手动保存状态,最好不要记录String而是记录CharSequence(中英文切换)

EditView 可以保存状态,但是会走回调

CompoundButton Check状态会保存, 但是会走回调, Text内容同TextView,

ImageView 不会保存任何信息

seekBar 会保存进度信息.但是会走回调

View的生命周期中也会有onSaveInstanceState的回调,具体的控件是否支持横竖屏旋转保存状态,可以看源码中是否在这个回调中进行状态保存(一般重写该方法的都是支持的),在我们自定义控件的时候其实也应该考虑到这一部分

相关文章

  • Activity横竖屏切换

    横竖屏切换 activity 会被销毁 通过修改配置实现,横竖屏切换不销毁 android:configChang...

  • changeConfig配置 以及对activity生命周期的影

    Android横竖屏切换小结Android横竖屏切换小结(老样子,图片啥的详细文档,可以下载后观看 http://...

  • Android 横竖屏切换总结

    一.Android切换横竖屏 应用的横竖屏设置应用的横竖屏设置主要是通过Activity的screenOrient...

  • 直播

    Android屏幕横竖屏切换和生命周期管理的详细总结 - CSDN博客 Android视频直播原理详解 - csd...

  • Android横竖屏切换总结

    如何设置屏幕方向 用户手动设置在开启手机的自动旋转功能后旋转屏幕即可。 代码设置通过Activity类的setRe...

  • Android横竖屏切换总结

    开发过程中难免会遇到一些需要横竖屏切换的需求,要实现这类需求一定需要明白android关于横竖屏过程中的一些问题。...

  • Android 横竖屏切换总结

    首先,说一些常规的Activity的横竖屏切换的生命周期,如果没有在Manifests中特殊标明的话会重新生成一个...

  • Android横竖屏切换调研报告

    Android横竖屏切换调研报告 两种响应横竖屏切换的方式 不走生命周期,执行onConfigurationCha...

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

    横竖屏切换时Activity的生命周期 不设置android:configChanges 切换为横屏: onPau...

  • Android横竖屏切换生命周期的变化

    Android横竖屏切换生命周期的变化 在面试的时候,面试官可能会问到进行横竖屏切换时Activity生命周期的变...

网友评论

    本文标题:Android 横竖屏切换总结

    本文链接:https://www.haomeiwen.com/subject/ssxasttx.html