android網路請求開發常見坑

在android應用開發過程中,經常需要透過網路請求獲取服務端的資料,透過網路請求提交客戶端的資料到伺服器端等場景;以下整理在android網路請求開發過程中新手開發者時常遇到的問題~

android。os。NetworkOnMainThreadException

android網路請求開發常見坑

出現這種問題的原因是由於在主執行緒中進行了網路請求操作,android下不建議在主執行緒中進行網路請求操作,因為這可能會造成UI介面的卡頓,引起應用效能問題等

那麼怎麼確定當前執行緒是不是

主執行緒

可以透過程式碼

Thread.currentThread().getName()

來打印出當前上下文的執行緒名稱,來觀察當前環境,列印結果中顯示是

main

執行緒的話,那就說明當前是在主執行緒上下文中執行操作了

android網路請求開發常見坑

android網路請求開發常見坑

解決方案

:應該在非主執行緒環境下進行網路請求的操作,也就是在別的執行緒中來開發網路請求的程式碼,來規避問題,使用new Thread新建執行緒呼叫測試,觀察結果可以發起網路請求了

android網路請求開發常見坑

android網路請求開發常見坑

在不同的網路請求庫中有相應的執行緒呼叫解決方案說明,請詳細查詢自己使用的網路請求庫開發文件來優雅的解決這樣的問題

No address associated with hostname

android網路請求開發常見坑

出現這種問題的原因是由於該應用沒有

訪問網路

的許可權,不能使用網路套接字

解決方案

:修改

AndroidManifest.xml

清單配置,增加如下的網路訪問許可權配置宣告

android網路請求開發常見坑

儲存配置,再重新啟動app除錯就會發現可以正常使用網路請求了

not permitted by network security policy

android網路請求開發常見坑

由於android網路訪問明文傳輸被限制,需要配置策略允許訪問

解決方案

:修改

AndroidManifest.xml

清單配置,修改application增加如下屬性配置

android:networkSecurityConfig=“@xml/network_security_config”

android網路請求開發常見坑

同時新增

res/xml/network_security_config.xml

資原始檔

android網路請求開發常見坑

<?xml version=“1。0” encoding=“utf-8”?>

配置好後重新啟動應用除錯,發起網路請求操作發現沒有問題了