本文來自http://blog.csdn.net/liuxian13183/ ,引用必須註明出處!
html
一、App若是被定義一個有參數構造函數,那麼須要再定義一個無參數的,若是不則會在某些狀況下初始化失敗java
二、include Java Exception stack in crash report 緣由:webview未被destroy和置空,快進快出容易致使Crashandroid
三、Json解析一直有反斜槓,如web
"Detail": "[\"1476438611831,120.011798,30.294126,6.5461546E-4,2.9163063E-4,0.0034914017,-0.05355559,0.080890246,9.80617,-9.765625E-4,2.1362305E-4,1.8310547E-\"]"而實際上須要這種
"Detail": [ [ "1476440497243", "120.011839", "30.294298", "0.0013065673", "0.010251816", "-0.07671833", "-0.04659828", "0.06689003", "9.806312", "-5.79834E-4", "6.866455E-4", "-0.0027008057" ] ]緣由:前者使用sdk自己提供的Json資源,後者使用gson提供的Json資源,若是要上傳jsonArray數據只能用Gson。
第1張是Json直接把value以Object的方式放入LinkedHashMap,第2張是Gson把Value分類(主要對Charater即String的接口)放入LinkedTreeMapjson
四、ScrollView經過addView加入Lv,結果焦點到達頁面底部,這是因爲Lv得到焦點引發的,因此把Lv的焦點去掉便可網絡
lv.setFocusable(false);框架
五、網絡請求返回數據一直是回車+空格的組合數據,報錯:java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=1函數
緣由:請求的接口沒有收到數據,是請求框架自身返回的數據,因此格式不正確;極可能是內網接口用外網鏈接致使佈局
六、優化
Error:Execution failed for task ':mergeAnzhiDebugResources'.
> Error: java.lang.RuntimeException: Crunching Cruncher img_bubble_default.9.png failed, see logs
主要緣由是.9圖片的長邊是放內容的,小點表明拉伸的,原來的位置恰好相反,改過來就好。
七、華爲手機讀取文件後截取,再得到圖片失敗。
分析:這個錯誤很奇怪,之前開發中常常不會遇到,而目前相對來講,各大廠商對權限的要求愈來愈嚴格,更甚者在安裝時即主動屏蔽若干權限,同時部分權限用時須要申請;說到這裏你可能就明白了,這裏主要是權限被剝奪的問題,要斷點到出錯的位置,提示賦予應用讀寫權限。
八、4.0以上版本,RadioGroup兩個子RadioButton均處於選中狀態
緣由在於:設計某一個radio爲true時,另一個沒有id,所以系統緣由致使兩個均被選中。
須要作的就是給radio設置id。
九、list不能addAll空數據,不然報空指針異常。系統層次的錯誤。
優化方案:
一、能用FrameLayout的,都換成這個(由於Android會對此layout進行merge操做),同時能不用layout的也儘可能不用
二、純色圖片,能用xml寫的,換用xml寫,圖片命令均以img_x_x.png
三、中文都寫到string文件裏,有相同中文的,去掉其中一個,命名儘可能短且通用,儘可能用Html的from格式和String的format格式來處理字符串,兩個方法都可在CMYStringUtil方法裏找到
四、上述二者不用的,大家暫時能夠不處理,且命令儘可能通用,如能夠命名爲alipay_str_finish就不命令爲alipay_str_service_finish
五、文字輸入框,只能輸入哪些類型,作一個限制android_limit,另外,監聽一下回車鍵,看應該跳下一行就把回車鍵命名爲「下一行」,當前表單填完,命名爲「完成」,並觸發提交按鈕,數據進行驗證
六、Exception儘可能去掉,緣由是要找到錯誤處理掉,而非簡單的加try..catch
七、寫intent傳遞數據,對象用TransferData傳遞,基本數據類型用putExtra來傳遞,注意key都要用IConstants裏的intent_key
八、方法都命名爲有意義的命名,具體參考「新人必讀」裏的規則,以及變量名,全局、局部、靜態變量等,另外不用的字段都刪掉
九、findId儘可能都改爲getEelement,使用Ctrl+F來替換,尤爲適配器裏,儘可能用getInflateView和getEelement來代替
十、把公用的佈局或代碼提出來,儘可能多用include、viewStub、merge
十一、有網絡請求的,都要加上onRefresh方法,避免請求失敗,須要從新加載,當前頁面無方法
十二、優化語法邏輯,全面考慮出現問題的狀況,具有產品思惟
讀這篇文章同時也要注意一下系統升級的問題,裏面一樣埋有很多坑:Android高級第十一講之不一樣系統間的區別
另外內存是個亙古不變的老難量,參考:Android高級之十二講之如何下降應用內存消耗