美文网首页
Crash集合

Crash集合

作者: topone37 | 来源:发表于2018-03-07 14:25 被阅读10次

    关于Android切换系统字体大小和字体样式导致App崩溃或者界面错乱的问题

    场景重现:主页面有一个ViewPager,有两页数据,滑动到第二页,然后切换字体,再切回app,app发生crash ,IndexOutOfBoundException

    在字体切换之后,系统会发送一个通知给app,通知其更新界面,然而走的生命周期方法确实
    onDestroy()->onCreate()->onResume();正常看起并没有什么不妥,但是:

    此时app是作为一种异常走的onDestroy()方法,并不是正常的按返回键进行的退出执行的onDestroy()。
    这个时候系统会自动在onSaveInstanceState()方法里面临时性的保存之前的界面状态或者变量信息。
    方便在onCreate()的时候,从bundle里面直接取出来使用。但是毕竟是异常的状态,有些实体的信息或者fragment堆栈的状态恢复的时候就有可能错乱,导致显示效果出错或者crash。

    //配置Activity的configChanges,防止页面被刷新
    
    android:configChanges="orientation|screenSize|keyboardHidden|**fontScale**
    //有一个尴尬的情况,如果我们改变的是字体样式,有点没辙
    
    //究其原因就是onDestroy的时候,有些数据不太正确,因此在恢复的时候,可能导致crash,最果断直接方法来了,如果有保存的值,直接置为null
    
    protected void onCreate(Bundle savedInstanceState) {
           if (null != savedInstanceState)
               savedInstanceState = null;
         super.onCreate(savedInstanceState);
    }
    

    相关文章

      网友评论

          本文标题:Crash集合

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