在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...