Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android發送get請求時報錯

android發送get請求時報錯

編輯:關於Android編程

異常信息:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.synology.synologycloud/com.synology.synologycloud.MainActivity}: android.os.NetworkOnMainThreadException

第一次看到這異常,字面意思是說:在主線程中的網絡異常。然後我就去了解了下這個異常,先看看官方的說明

public class

NetworkOnMainThreadException

extends RuntimeException
java.lang.Object ? java.lang.Throwable ? java.lang.Exception ? java.lang.RuntimeException ? android.os.NetworkOnMainThreadException

Class Overview


The exception that is thrown when an application attempts to perform a networking operation on its main thread.

This is only thrown for applications targeting the Honeycomb SDK or higher. Applications targeting earlier SDK versions are allowed to do networking on their main event loop threads, but it's heavily discouraged. See the document Designing for Responsiveness.

Also see StrictMode.

一個APP如果在主線程中請求網絡操作,將會拋出此異常。Android這個設計是為了防止網絡請求時間過長而導致界面假死的情況發生。

所以get請求不能在主UI線程中發起,我的解決辦法是另外開一個線程,方法如下:

//android中不能再主線程中訪問網絡資源
new Thread(new Runnable(){
@Override
public void run() {
try {
getOauthToken();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved