Android 台灣中文網

標題: 請問發生 android.os.NetworkOnMainThreadException問題 [打印本頁]

作者: aa3522    時間: 2013-4-12 17:25
標題: 請問發生 android.os.NetworkOnMainThreadException問題
我目前寫了一個程式 用2.3.3以下手機可以連到網路
用更高的就出現android.os.NetworkOnMainThreadException
我有網路查文說是不能直接在ui 掛載網頁
有人說第一種是使用thread 來存取 網路,但完全沒頭緒有人可以提供範例嗎?

第二種說可以使用這幾句貼上去就能解決
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
但是我使用這幾句他寫有問題 整個程式就無法執行了這怎樣回事
第三種說android:targetSdkVersion設定成10或9 ,這方法能讓我的蝴蝶機 灌程式之後連網成功
但是我程式上面有地圖功能  我不知道會不會有影響
還是有別的解決方式
作者: ploglin    時間: 2013-4-12 17:25
本帖最後由 ploglin 於 2013-4-16 10:58 編輯

我記得在 2.3 之後的版本,他們不希望你在主程序中去存取網路,因此會出現這樣的錯誤。
你可以透過 Thread 的方式,或是 Async 的方式去存取網路,這樣就不會有問題了。

切記,如果使用的是 Thread 的方式,在 run 的函式中,是不可以去處理 UI 的,必需在 handlerMessage 中再去處理,否則也會有錯誤。

Thread Example
http://cookiesp.pixnet.net/blog/post/90291024-android-thread-%E7%B0%A1%E5%96%AE%E9%81%8B%E7%94%A8

Async Example
http://blog.csdn.net/mylzc/article/details/6772129
作者: whl    時間: 2013-4-12 23:44
1. google 一下就有很多範例啊
google 一下
2.map 只要有出現地圖,就是成功了,和 sdk 版本無關。
作者: iamjason008    時間: 2013-4-15 16:02
參考這裡看看
http://developer.android.com/training/basics/network-ops/connecting.html

http://stackoverflow.com/questions/6343166/android-os-networkonmainthreadexception




歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1