美文网首页
横竖屏切换问题以及解决方案

横竖屏切换问题以及解决方案

作者: Air_w | 来源:发表于2018-09-14 13:55 被阅读0次

横竖屏切换,导致Activity会重新启动(生命周期流程:onPause()、onStop()、onDestroy()、onCreate()、onStart()、onResume())

1、Dialog

        Dialog导致内存溢出、WindowTokenException等等

        解决方案:DialogFragment替换Dialog.

2、Activity

        Activity重建导致数据问题

        1、Activity执行生命周期,先onPuase() ---> onStop() ---> onDestroy() ---> onCreate() ---> onStart() ---> onResume()

        2、如果在这些生命周期中,操作了某些数据,比如在onCreate中添加一条信息“Name”,当横竖屏切换时,又执行了onCreate()这就导致信息“Name”被重复添加的,在数据集中重复出现,进而导致了数据的错乱现象。

        解决方案:

        1、设置Activity横竖屏时不执行生命周期的方法:

        2、或则:在Activity销毁时进行数据的及时的销毁处理。

3、Fragment

        1、Fragment重建,系统将会调用 无参构造方法进行重建。

        解决方案:

        1、参数数据,通过Bundle传递;不要创建其他有参的构造方法

Bundle传递数据

        2、默认保留一个公共的无参的构造方法(必须是公共的、无参的。PS:个人有次为了所谓的增强Fragment的封装性,只想对外部抛出如上图的 newInstance()的创建对象的方法,避免使用者调用无参的构造方法出现忘记传值的问题,私自将 public SettingFragment 改为:private SettingFragment;由此导致Fragment的重创建时(例如:横竖屏切换),导致无法初始化Fragment而终止运行,查其原因:系统在横竖屏切换时进行实例化Fragment对象时,调用的是无参的构造方法,而如果设置为私有的则会导致系统调用无参构造方法失败,进而导致实例化失败)。

公共的无参的构造函数

相关文章

网友评论

      本文标题:横竖屏切换问题以及解决方案

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