【问题标题】:NetworkOnMainThreadException inside AsyncTask.doInBackground() methodAsyncTask.doInBackground() 方法中的 NetworkOnMainThreadException
【发布时间】:2015-07-09 11:53:55
【问题描述】:

在尝试在主 UI 线程上进行网络连接时首次遇到此问题。 然后尝试使用 AsyncTask 避免它,但仍然得到相同的异常。 Networkign 仅在 AsyncTask.doInBackground() 方法内发生。但我仍然得到这个例外。我该如何解决?

public class AsyncRSSLoader extends AsyncTask<Void, Void, RSSData> {
    private String url = "http://www.nasa.gov/rss/dyn/image_of_the_day.rss";


    @Override
    protected RSSData doInBackground(Void... params) {
        try {
            IotHandler handler = new IotHandler();
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser parser = factory.newSAXParser();
            XMLReader reader = parser.getXMLReader();
            reader.setContentHandler(handler);
            InputStream inputStream = new URL(url).openStream();
            reader.parse(new InputSource(inputStream));

            RSSData data = new RSSData();
            data.setDate(handler.getDate());
            data.setTitle(handler.getTitle());

            data.setImage(getBitmap(handler.getImageUrl()));

            return data;
        } catch (Exception e) {
            e.printStackTrace();
            Log.e("NASA_RSS", e.getStackTrace().toString());
        }

        return null;
    }

}

以及这个类的用法:

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        AsyncRSSLoader loader = new AsyncRSSLoader();
        RSSData data = loader.doInBackground();

        resetDisplay(data.getTitle(), data.getDate(), data.getImage(), data.getDescription());
    }

【问题讨论】:

    标签: java android android-asynctask networkonmainthread


    【解决方案1】:

    你必须打电话

    loader.execute();
    

    而不是loader.doInBackground()。是execute() 从工作线程调用doInBackground。如果您需要将数据传回 Activity,请使用委托。你可以找到一个例子here

    【讨论】:

      猜你喜欢
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多