程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> networking-出現android.os.NetworkOnMainThreadException異常

networking-出現android.os.NetworkOnMainThreadException異常

編輯:編程綜合問答
出現android.os.NetworkOnMainThreadException異常

當我運行我的android工程時,下邊的代碼中我得到了一個錯誤

URL url= new URL(urlToRssFeed);
SAXParserFactory factory =SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();
XMLReader xmlreader=parser.getXMLReader();
RssHandler theRSSHandler=new RssHandler();
xmlreader.setContentHandler(theRSSHandler);
InputSource is=new InputSource(url.openStream());
xmlreader.parse(is);
return theRSSHandler.getFeed();

錯誤是
android.os.NetworkOnMainThreadException

我怎麼能夠改掉這個錯誤?

我的版本是
SDK Platform Android 3.1,API 12, Revision 2 Eclipse SDK - 3.6.2

最佳回答:


當一個應用程序試圖在它的主線程執行網絡操作的時候就會拋出這個異常。在AsyncTask中運行代碼:

class RetreiveFeedTask extends AsyncTask<String, Void, RSSFeed> {

    private Exception exception;

    protected RSSFeed doInBackground(String... urls) {
        try {
            URL url= new URL(urls[0]);
            SAXParserFactory factory =SAXParserFactory.newInstance();
            SAXParser parser=factory.newSAXParser();
            XMLReader xmlreader=parser.getXMLReader();
            RssHandler theRSSHandler=new RssHandler();
            xmlreader.setContentHandler(theRSSHandler);
            InputSource is=new InputSource(url.openStream());
            xmlreader.parse(is);
            return theRSSHandler.getFeed();
        } catch (Exception e) {
            this.exception = e;
            return null;
        }
    }

    protected void onPostExecute(RSSFeed feed) {
    }
 }

 new RetreiveFeedTask().execute(urlToRssFeed);
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved