Android開發中常見問題分析及解決


最近公司有新的業務需求,需要開發一款APP,因為我開發過Android APP(我想告訴他們,那是4年前的事了,嚶嚶嚶),就把開發任務交給我了,當然也不是我一個人啦,讓我組開發小組,說白了,就是讓我來負責技術指導和框架搭建。我,能怎么辦,只能硬着頭皮寫啊。確實有點兒手生了,所以中間還是遇到一些問題,下面記錄一下吧。

1,日志的收集

日志記錄是一個常見的需求,對開發和測試都很重要,有很多開源的日志工具,也可以自己開發,這里我選的是一個開源的工具。

歡迎使用:TLog

2,子線程調用Toast報Can't create handler inside thread that has not called Looper.prepare() 錯誤

這是一種典型的線程搞錯了的問題。UI線程即主線程才能做UI相關的操作,網絡線程里不能操作UI,如果要操作就需要使用Looper.prepare(), Looper.loop()了,但是如果在UI線程使用Looper.prepare()話,就會報上面的錯誤,app會停止。

問題的難點在於怎么區分UI線程和網絡線程,很簡單,在網絡請求的回調里的,就是網絡線程,其他的就是UI線程。

3,Only the original thread that created a view hierarchy can touch its views的問題

原因:Android系統中的視圖組件並不是線程安全的,如果要更新視圖,必須在主線程(UI線程)中更新,不可以在子線程(網絡線程,耗時的線程)中執行更新的操作。需要通過Handler去通知主線程更新UI。

4,Cleartext HTTP traffic to xxx not permitted的問題

原因:Google表示,為保證用戶數據和設備的安全,針對下一代 Android 系統(Android P) 的應用程序,將要求默認使用加密連接,這意味着 Android P 將禁止 App 使用所有未加密的連接,因此運行 Android P 系統的安卓設備無論是接收或者發送流量,未來都不能明碼傳輸,需要使用下一代(Transport Layer Security)傳輸層安全協議,而 Android Nougat 和 Oreo 則不受影響。此在Android P 使用HttpUrlConnection進行http請求會出現以下異常java.net.UnknownServiceException: CLEARTEXT communication ** not permitted by network security policy在Android P系統的設備上,如果應用使用的是非加密的明文流量的http網絡請求,則會導致該應用無法進行網絡請求,https則不會受影響,同樣地,如果應用嵌套了webview,webview也只能使用https請求。

解決方法:在AndroidManifest.xml文件中配置

<application

android:name=".MesApplication"

android:allowBackup="true"

android:icon="@drawable/logo"

android:label="@string/app_name"

android:roundIcon="@drawable/logo"

android:supportsRtl="true"

android:theme="@style/AppTheme"

android:usesCleartextTraffic="true">

</application>

 

碼字不易,如果覺得有幫助,一定要給我點贊喲~~

不然信不信我砸了你家燈,半夜偷親你 ( ̄ε  ̄) !!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM