1. 程式人生 > >專案BUG總結1

專案BUG總結1

     專案上線一段時間後,加入了公司的監控平臺,奔潰還真是不少。。公司的無線環境和高配置的手機幾乎任何bug都沒測出來,經過一段時間的fix,總結下結果防止以後再犯同樣的錯誤

 B1:  java.lang.ClassCastException 

 出現這個錯誤表示很蛋疼,原因是我們居然匯入了兩個不同版本的zxing包,這個問題是由於大意造成的以後一定要清理包中無用的程式碼,特別是功能相同已經被廢棄的程式碼

B2:   java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState   

     在使用Fragment的時候,這個bug幾乎經常出現,當我們在Activity的onCreate方法中加入一個Fragment時不會出現這個問題,但是當我們通過一個非同步回撥新增的時候會出現這個問題;當Activity的狀態已經呼叫了onSaveInstanceState   的時候,當前Activity 的狀態已經結束了,此時你還強制性的去新增一個Fragment異常就此產生;

     解決方案:提交fragment時使用commitAllowingStateLoss而不是commt,允許Activity狀態丟失

B3: java.lang.IllegalStateException: Fragment a{44629768} not attached to Activity 這個錯誤出現了兩種情況

      1: android.support.v4.app.Fragment.getResources  

         在Fragment中獲取資源資訊是解決使用了fragment自帶的getResource ,而此時fragment還未attach到Activity上

        解決方案:使用Activity的getResource 或者使用當前應用的Application的getResource

      2:android.support.v4.app.Fragment.startActivityForResult

        非同步回撥後未對Activity的狀態做判斷

       解決方案:每次非同步回撥的時候在回撥方法最前面判斷當前Fragment所在的Activity是否還存在 ---》

        if (getActivity() == null || getActivity().isFinishing()
                    || MyFragment.this.isDetached()) {
                return;
            }

B4: java.lang.IllegalStateException: Activity has been destroyed

       由於非同步回撥後Activity已經銷燬

      解決方案   

    if (getActivity() == null || getActivity().isFinishing()
                    || MyFragment.this.isDetached()) {
                return;
            }