android.os.NetworkOnMainThreadException错误

来源:互联网 发布:无印良品淘宝有真的吗 编辑:程序博客网 时间:2024/05/19 13:19

原因:不能在主线程中使用网络请求

package com.wu.xml;import android.app.Activity;import android.os.Handler;import android.os.Message;import android.os.StrictMode;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import org.xml.sax.InputSource;import org.xml.sax.XMLReader;import java.io.StringReader;import javax.xml.parsers.SAXParserFactory;import util.HttpDownload;public class MainActivity extends Activity {    private Button parseButton;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //4.0系统专用,避免在Activity中使用HTTP请求时报错        //StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());        //StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());        parseButton = (Button)findViewById(R.id.parse);        parseButton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                new Thread(runnable).start();            }        });    }    Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            //可以加入bundle数据        }    };    Runnable runnable = new Runnable() {        @Override        public void run() {            HttpDownload hd = new HttpDownload();            String resultStr = hd.download("http://192.168.1.103:8080/build.xml");            System.out.println(resultStr);            try{                //创建一个SAXParserFactory                SAXParserFactory factory = SAXParserFactory.newInstance();                XMLReader reader = factory.newSAXParser().getXMLReader();                //为xml设置内容处理器                reader.setContentHandler(new MyContentHandler());                reader.parse(new InputSource(new StringReader(resultStr)));            }catch (Exception e){                e.printStackTrace();            }            //Message msg = new Message();            //msg.arg1=0;            //Bundle bundle = new Bundle();            //msg.setData(bundle);            //handler.sendMessage(msg);        }    };}


0 0
原创粉丝点击