2012-08-15 40 views
1

我有一個android項目設置爲在android 3.2上運行,並且我有一個在其主線程中使用網絡的庫項目,它由sdk版本3,2引發android.os.NetworkOnMainThreadException。通過下面的SDK版本Honeycomb在主線程中使用網絡是好的:http://developer.android.com/reference/android/os/NetworkOnMainThreadException.htmlandroid.os.NetworkOnMainThreadException即使我將目標SDK設置爲android 1.6

爲了解決這個問題,我嘗試將我的庫項目的SDK版本設置爲1.6,但同樣的錯誤仍然存​​在!這是Android的正常行爲嗎?這不是錯嗎?向後兼容性怎麼樣?

編輯:我知道我不應該在主線程中執行網絡請求,但它不是我的代碼,而是我必須使用的庫。我不能/不想觸摸圖書館的代碼,它是屬於其他公司的商業API。

編輯2:我當然試圖得到一個更新/固定版本的庫,但這是另一個問題。所以我現在的問題是,有沒有一種方法來編譯/運行一個較舊的SDK庫?

回答

2

我認爲最重要的是,如果您嘗試在3.0+設備/仿真器上運行它,它將無法工作。你需要使用一個AsyncTask。

+0

我會的,但圖書館項目不屬於我,我寧願不要破解它。 – Elchin 2012-08-15 15:01:04

+2

它是一個破碎的庫,有誰建造它修復它。 – HandlerExploit 2012-08-15 15:02:05

+0

@HandlerExploit,我完全同意,但它更容易被告知,比做:) – Elchin 2012-08-15 15:02:44

1

您正在使用的庫項目不應該在主線程上執行網絡操作。 Android正在拋出這個異常,因爲這是非常糟糕的做法。

你不應該破解NetworkOnMainThreadException;改用AsyncTaskThread來執行網絡操作。

閱讀blog post瞭解更多信息。

+0

+1阿門,兄弟! :-) – 2012-08-15 15:04:14

+0

我完全同意你們,但我的情況不同。我用細節編輯了我的問題。 – Elchin 2012-08-15 15:09:47

+0

@Elchin如果你不想改變庫項目中的源代碼,請嘗試找到一個新的。底線是你不應該在UI線程上執行潛在的昂貴操作......開發人員網站基本上在每篇文章中都提到了這個與「實現響應式UI」有關的任何文章。 – 2012-08-15 15:22:16

相關問題