android 開發坑點記錄

  1. 撥號功能
    1) 調用撥號界面前需要判斷當前設備是否有撥號程序,可使用try-catch捕獲打開異常,避免應用閃退
  2. webview開發問題
    1) 緩存問題——沒有開啓緩存可能導致網頁部分功能不能正常使用,而出現異常情況
    2) WebViewClient對象下的方法都爲異步回調方法,如果在這些方法有android UI相關操作則需要注意activity關閉時不再執行到相應的操作,比如dialog的關閉操作,在onDestroy()中提前執行,同時dialog的顯示和關閉要使用同步鎖
    3) url攔截會導致頭信息丟失(還可能有其他信息丟失),從而導致一些功能異常,因此需慎用
    4) 關於302重定向問題,還未解決
    5) 避免webView內存泄漏:https://www.jianshu.com/p/3e8f7dbb0dc7 http://blog.csdn.net/xygy8860/article/details/53334476?utm_source=itdadao&utm_medium=referral
  3. 懸浮窗口問題
    1) 懸浮窗多次添加會導致閃退——在添加或移除懸浮窗的代碼外圍使用try-catch捕獲異常,避免閃退
    2) 懸浮按鈕如需全局移動則需要將flags屬性設置爲FLAG_LAYOUT_IN_SCREEN,但不要同時設置FLAG_LAYOUT_INSET_DECOR,否則在狀態欄下懸浮按鈕會被遮擋住部分視圖
  4. 文件操作問題
    1) 在主線程中執行文件操作在少量4.4機型中可能會出現ANR,因此爲了避免ANR,儘量不要在主線程中操作文件
  5. 多界面同時切換問題(android系統bug)
    1) 噹噹前應用在切換界面的同時也在切換應用的時候,部分機型會出現ANR,當界面頻繁快速切換時也有可能出現 —— 儘量避免頻繁切換界面且在應用跳轉時不要執行界面切換相關操作
  6. 第三方登錄:
    1)QQ授權登錄的簽名配置需要全部小寫
    2)微信授權登錄的簽名配置需要全部大寫
    3)注意包名、appID必須和第三方後臺配置一至
    4)如果配置信息都一至,還是無法授權,則可能是緩存問題(如:微信緩存了錯誤的簽名票據)
    5)簽名的填寫千萬千萬不要手動敲,一定要複製,不然極容易出錯(已踩坑,而且是很深很深的坑)
    6)QQ提供的簽名獲取工具無法獲取一些應用的簽名,可以使用微信或微博提供的簽名獲取工具獲取
  7. 在manifast文件中配置meta-data數據時,如果屬性value的值爲一長串的數字,那麼必須在前面加上”\ “(斜槓和空格),否則編譯之後,該數值會被修改,從而造成錯誤;如原本value=”1234567890123”,那麼應該改成value=”\ 1234567890123”,這樣編譯出來的apk中對應的值纔是正確的
  8. 如果出現Activity或一些成員變量莫名其妙被回收變NULL值,則可能是android:configChanges配置不當,Activity被系統回收導致(只有部分機型會出現),示例:跳轉第三方支付返回後閃退;QQ、微信授權登錄返回後閃退。關於android:configChanges配置說明,請看文章:http://blog.csdn.net/u012670875/article/details/79626922 ;所以在開發與第三方應用有關聯的APP時,必須好好考慮下android:configChanges配置,避免出現異常。
  9. 在開發有多層次的Activity相互跳轉銷燬時,需要仔細考慮android:launchMode配置問題,避免Activity莫名被回收導致異常閃退,或Activity長時間沒被回收而浪費內存;android:launchMode配置相關文章:http://blog.csdn.net/u012670875/article/details/79626484
  10. android 使用Animation.startNow()啓動動畫時會有兼容問題,使用View.startAnimation(Animation)啓動動畫可以解決該問題
  11. app安裝時提示安裝包損壞,可能的原因有:1.安裝包不完整(確實損壞)2.同包名的不同app已經安裝在手機上(比如調試時安裝的應用)3.已經安裝的同包名APP的編譯版本較高(比現在要安裝的高)相關文章:https://www.jianshu.com/p/f8bf29393cfa
  12. 使用https協議時,如果使用Apache HttpClient進行聯網通訊,則可能在低版本的Android設備上無法聯網,提示證書不匹配,需要改爲HttpsURLConnection則可以解決。參考文章:https://blog.csdn.net/wangbaochu/article/details/50915938
  13. app簽名相關:在上線三星渠道的時候,會提示簽名版本過低不適用的錯誤,這個時候需要使用apksigner對app進行簽名,而不能使用apktool,簽名命令:java -jar apksigner.jar sign –ks kestore的路徑 –out output.apk input.apk 。 相關的文章:
    https://blog.csdn.net/mrzhouxu/article/details/79225439
    https://blog.csdn.net/qq_32115439/article/details/55520012
    https://blog.csdn.net/lamelias/article/details/53669417
    同問題描述鏈接:https://stackoverflow.com/questions/45182643/double-signing-apk-sha1-other-issues
  14. 爲了避免因activity銷燬而導致dialog等動態界面顯示時閃退問題,對於Activity對象和Context對象的管裏必須嚴格,不要讓其他對象(特別是單例對象)直接持有Activity或Context的引用,改成需要使用時動態獲取,並且需要有統一的方法判斷Activity或Context的生命週期是否是處於可用的狀態。
  15. 待補充。。。
  16. 待補充。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章