Android4 0不能在主線程中進行HTTP請求

2021-06-19 17:52:10 字數 885 閱讀 1035

在android4.0以後,會發現,只要是寫在主線程(就是activity)中的http請求,執行時都會報錯,這是因為android在4.0以後為了防止應用的anr(aplication not response)異常。

就針對此問題有兩種解決的方法:

1.可以再activity的oncreate()方法中加入這樣一段**,如下:

if (build.version.sdk_int >= 11) {

strictmode.setthreadpolicy(new strictmode.threadpolicy.builder().detectdiskreads().detectdiskwrites().detectnetwork().penaltylog().build());

//可以省略,我使用時detectleakedclosableobjects()出現問題。

strictmode.setvmpolicy(new strictmode.vmpolicy.builder().detectleakedsqlliteobjects().detectleakedclosableobjects().penaltylog().penaltydeath().build());

後就可以在主線程中進行網路操作了,此方法不許再2.3版本之後。

2.一般情況我們應該這樣做

啟動一條子執行緒進行你的網路請求。

new thread(downloadrun).start(); 

runnable downloadrun = new runnable(){ 

@override 

public void run() { 

// todo auto-generated method stub 

updatelistview(); 

Android4 0不能在主線程中進行HTTP請求

在android4.0以後,會發現,只要是寫在主線程 就是activity 中的http請求,執行時都會報錯,這是因為android在4.0以後為了防止應用的anr aplicationnot response 異常,即使這裡表達不是很清晰,大家應該都明白吧,哈哈 就針對此問題有兩種解決的方法 1....

Android 4 0以後主線程訪問網路問題

android 4.0以後,預設情況下是不允許在主線程中訪問網路。同樣的程式在android2.3上執行完全正常,而跑到android4上面,bug出現了.看了一下異常 android.os.networkonmainthreadexception 多執行緒中訪問網路 既然系統預設不允許在主線程中訪...

Android 4 0 事件系統

2013 01 31 15 13 295人閱讀收藏 舉報 事件系統簡介 1.android 事件系統,它解決的是如何將按鍵 滑鼠 觸屏訊息從收集到最終將之傳送到焦點視窗進行處理的問題 2.android 事件處理 流程分兩部分,一部分是從 framework 開始,如何 從底層讀取事件並分發 給ac...