SORU
14 HAZİRAN 2011, Salı


android.os.NetworkOnMainThreadException

Kod aşağıda RssReader için Android projemi çalıştırırken bir hata var.

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();

Ve bir hata gösterir:

android.os.NetworkOnMainThreadException

Bu sorunu nasıl düzeltebilirim?

CEVAP
14 HAZİRAN 2011, Salı


Bu durum, uygulamanın ana iş parçacığı üzerinde bir ağ iletişimi işlemi gerçekleştirmek için çalıştığında atılır. AsyncTask kodunuzu çalıştırın:

class RetrieveFeedTask 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) {
        // TODO: check this.exception 
        // TODO: do something with the feed
    }
}

Nasıl bu görevi yürütmek için: Mainactivity.java dosya içinde oncreate içinde bu satırı ekleyin() yöntemi

new RetrieveFeedTask().execute(urlToRssFeed);

AndroidManifest.xml dosyasına bu eklemeyi unutmayın:

<uses-permission android:name="android.permission.INTERNET"/>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Abe Olandres

    Abe Olandres

    16 EYLÜL 2006
  • booba1234

    booba1234

    22 Temmuz 2006
  • DominicFear

    DominicFear

    30 Kasım 2006