如何修复“android.os.NetworkOnMainThreadException”?

2024-03-28

我在运行 RssReader 的 Android 项目时遇到错误。

Code:

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

我该如何解决这个问题?


注意:AsyncTask 在 API 级别 30 中已被弃用。
异步任务 |安卓开发者 https://developer.android.com/reference/android/os/AsyncTask

当应用程序尝试在其主线程上执行网络操作时,会引发此异常。运行你的代码AsyncTask http://developer.android.com/reference/android/os/AsyncTask.html:

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;
        } finally {
            is.close();
        }
    }

    protected void onPostExecute(RSSFeed feed) {
        // TODO: check this.exception
        // TODO: do something with the feed
    }
}

如何执行任务:

In MainActivity.java文件中您可以添加这一行oncreate() method

new RetrieveFeedTask().execute(urlToRssFeed);

不要忘记将其添加到AndroidManifest.xml file:

<uses-permission android:name="android.permission.INTERNET"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修复“android.os.NetworkOnMainThreadException”? 的相关文章

  • 如何编译telegram jni文件夹

    我正在尝试编译电报源代码中的 jni 文件夹github com DrKLO Telegram http github com DrKLO Telegram 与NDK 但是当我在 ndk 文件夹中的 cmd 中编写 ndk build 时
  • Hadoop:处理大型序列化对象

    我正在开发一个应用程序来使用 Hadoop 框架处理 和合并 几个大型 java 序列化对象 顺序 GB 大小 Hadoop 存储将文件块分布在不同的主机上 但由于反序列化需要所有块都存在于单个主机上 因此它会极大地影响性能 我该如何处理这
  • Clojure/Java:用于声音频谱分析的 Java 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以接受大量音频数据并返回给定频带内随时间变化的平均幅度的库 我已经在 comp dsp
  • 在 Apache POI 4.0 中为 XSSFWorkbook 创建自定义颜色样式

    要在 Apache POI 3 7 及更低版本中为 XSSFWorkbook 应用自定义颜色 可以执行以下操作 java awt Color c new java awt Color 1 2 3 XSSFCellStyle xcs xssf
  • 在Java程序中打开Windows虚拟键盘

    我想在按钮中创建一个事件 当我单击按钮时 我想打开 Windows 虚拟键盘 你能帮我看一下代码吗 谢谢您的合作 此致 您可以使用 getRuntime 来执行它 import java io IOException public clas
  • 如何使用 jasper 从 jsp 生成 pdf 格式的报告

    在我的应用程序中 我可以连接到数据库并获取数组结果集 并使用 JSP 代码迭代该数组并使用 HTML 在网页中显示报告 我希望 HTML 网页中生成的报告可以以 PDF 格式导出并保存在某个 pdf 文件中 请告诉我如何实现这样的技术来实现
  • Java 泛型和数字

    为了看看我是否可以清理一些数学代码 主要是矩阵代码 我尝试使用一些 Java 泛型 我有以下方法 private
  • 如何在ubuntu服务器上安装android SDK

    我在 ubuntu 服务器中有一个 React Native 项目 我想构建一个用于生产的 Android 应用程序 为此 我首先必须生成 Gradle Wrapper 文件 因此我在中运行此命令android目录 gradle wrapp
  • java中如何在另一个类中使用嵌套类?

    我有一些情况 我想在另一个类中使用另一个类的内部类 喜欢 public class ListData public static class MyData public String textSongName textArtistName
  • 在日志中显示 Spring 事务

    我为 spring 配置了事务支持 有什么方法可以记录事务以确保我正确设置所有内容 在日志中显示是查看正在发生的情况的好方法 in your log4j properties 对于替代记录器或 log4j 的 xml 格式 请查看文档 根据
  • java中调用父构造函数

    我有两节课Parent and Child 而Parent有一个需要 3 个参数的构造函数 class Parent public Parent String host String path int port 现在我想要Child构造函数
  • 以从左到右的模式启动 Activity

    我面临一个问题 我有三项活动 我需要向左滑动开始新活动 Activity1 Activity2 Activity3 means 当我单击按钮时 新活动不应像 Android 行为那样直接显示 我希望新活动来自右侧并显示在当前屏幕上 任何人都
  • 对齐顶部两个具有不同字体大小的文本视图

    我使用约束布局 我想实现以下目标 app layout constraintBaseline toBaselineOf 属性底部对齐两个文本视图 有什么方法可以使两个顶部对齐吗 由于大小差异 常规的 app layout constrain
  • 无法查看数据选择器上的当前数据

    我创建了一个自定义数据选择器 其中显示 1950 年至 2016 年的年份 现在 当我第一次打开选择器时 我想设置当天的当前数据 但我无法将其设置为当前数据 第一次启动后 它的工作原理与我希望的完全一样 这是我迄今为止尝试过的代码 priv
  • 以编程方式启用和禁用自动旋转?

    有很多很酷的小部件可以在手机上启用和禁用自动旋转 禁用它会在手机上的所有应用程序中关闭它 他们如何实现这一目标有什么想法吗 这应该可以为你解决问题 import android provider Settings public static
  • 为什么 Collections.addAll 应该比 c.addAll 更快

    The Java API 文档说 http java sun com javase 6 docs api java util Collections html addAll java util Collection 20T 以下关于Coll
  • 使用 libGDX 写入 Json

    我是 Json 和 libGDX 的新手 但我创建了一个简单的游戏 我想将玩家姓名及其分数存储在 Json 文件中 有没有办法做到这一点 我想创建一个 Json 文件Gdx files localStorage如果它不存在 如果存在 则向其
  • List 和 List 之间的区别[重复]

    这个问题在这里已经有答案了 我读过很多这方面的内容 我知道 List listOfObject new ArrayList
  • 从 Java 8 流中获取每个第 n 个元素

    假设我有一个这样的列表 1 2 3 4 5 6 7 8 9 10 是否可以使用 Java 8 流从该列表中获取每个第二个元素以获得以下内容 1 3 5 7 9 或者甚至可能是每三个元素 1 4 7 10 基本上 我正在寻找一个函数来获取流的
  • 将图像上传到服务器 PHP Android

    我现在迷失了尝试将图像上传到我的服务器 我可以在 Android 设备上拍照并获取我的位置 我有以下代码将文件上传到服务器 public Boolean postFunction File image String tag postFunc

随机推荐

  • 在 Gatsby 上运行 SASS 不起作用

    昨天 我能够设置 gatsby 的入门包实例并部署到 github 页面 从那时起 我在本地更新了我的react js 文件 这似乎在本地运行良好 现在我想编译我的 sass 我找不到有效的解决方案 这是我尝试安装的 sass 编译器 sa
  • Python 定时脚本

    如何让 python 脚本每天在设定的时间运行 确切地说是下午 2 00每天 有没有办法让它每天运行两次 不太确定从哪里开始 谢谢您的帮助 不要重新发明和使用任何系统上已有数十年的功能 cron 除此之外 PyPI 列出了一堆与 cron
  • 如何使用 imaplib 创建电子邮件并将其发送到特定邮箱

    我正在尝试使用 python 的 imaplib 创建一封电子邮件并将其发送到具有特定名称的邮箱 例如收件箱 任何人都有一些很好的建议 IMAP 协议不是为发送电子邮件而设计的 它旨在操纵邮箱 要创建电子邮件并发送它 您可以使用 SMTP
  • 以编程方式绘制气泡

    I would like to have a bubble with a precentage value in my app I can t use 9 patches as i want it to be customizable an
  • 数据集排序

    In DataTable我可以排序 dataTable DefaultView Sort SortField DESC 我得到了一个DataSet从数据库中 我想知道我可以对DataSet就像我做的那样DataTable 您仍然可以从数据集
  • 如何集成测试两个 Rails 应用程序

    我们有两个独立的 Ruby on Rails 应用程序 一个接受上传的文件 另一个根据另一个应用程序收到的上传生成文件 我们正在尝试整合端到端黑盒回归和集成测试 以证明当您将某个文件上传到第一个应用程序时 您可以指望从另一个应用程序中获取某
  • 为什么音频可视化直播无法在移动设备/Safari 上运行?

    我正在尝试基于 Three js 示例制作音频直播可视化工具 https trijs org examples q visua webaudio visualizer https threejs org examples q visua w
  • JSON回发到c# webmethod添加文字控制

    我正在学习 webmethods 并使用 JSON 发回给它们 我在下面得到了以下内容 但它说找不到 webmethod 404 不知道我哪里出错了 谢谢 在页面 JavaScript 中
  • 根据两列的值选择 pandas 数据框行

    我希望根据两列值选择一些特定行 例如 d user 1 2 3 4 item 5 6 7 8 f1 9 16 17 18 f2 4 5 6 5 f3 4 5 5 8 df pd DataFrame d print df Out f1 f2
  • 多个ViewModel之间的数据共享

    进一步我的问题如何绑定多个型号的 Bing 图钉 https stackoverflow com questions 7305582 how can i bind bing pushpins from multiple models 这对我
  • 如何获取组件中的列表值?

    例如 我导入了一个名为
  • PHP 7 - 不支持声明“strict_types”

    我在一个小项目中使用 PHP 7 也在我的本地和生产服务器中使用相同的配置 一切都在我的本地服务器上工作 但在完成 LAMP 设置后在生产服务器上我无法在 etc php 7 0 apache 下找到 apache 文件夹 所以我遇到了内部
  • 方括号多列 R

    我很困惑 我试图根据两列中的值隔离 df 的某些行 一如既往 我首先在实践数据中尝试这一点 我的代码工作正常 data1 lt df2 df2 fruit kiwi df2 fruit orange df2 fruit apple df2
  • 使用额外的命令从命令行启动 Android 活动 [重复]

    这个问题在这里已经有答案了 我创建了一个简单的活动 我想从命令行启动并从命令行传递一些值 但是 如果我尝试这样做 adb shell am start com example mike app SimpleActivity es Messa
  • android 画廊点击时没有滚动

    默认情况下 当单击图库项目时 图库会自动滚动到所单击的项目的中心 我怎样才能覆盖这种行为 我不希望图库在单击时滚动到中心 我希望它保持在原来的位置 我认为这是一个正确的解决方案 Override public boolean onSingl
  • 页面加载完成时打开 css 弹出窗口

    I have 纯CSS弹出窗口这个弹出窗口适用于单击按钮 但我需要在页面加载完成时弹出这个 div div class wrap a href modal one class btn btn big Modal a div div clas
  • 无法选择输入框中的文本

    我在表单上有以下用于浮动标签的 HTML CSS 抱歉 如果它有点混乱 box sizing border box html font 14px 1 4 Sans Serif form width 320px float left marg
  • C# 多线程:需要获取读锁吗?

    从多个线程读取变量之前是否需要获取变量的锁 简短的回答是 这取决于 长答案是 如果它不是共享值 即只有一个线程可以看到它 或使用它 则不需要任何同步 如果它是一个不可变的值 即您只设置一次 然后只读取一次 那么在没有同步的情况下这样做是安全
  • 如何排除嵌套复合聚合中的术语

    我在 elasticsearch 中的嵌套字段上使用复合聚合 但我想从结果中排除一些术语 此聚合正在运行 size 0 geo communication nested path geo aggs table composite size
  • 如何修复“android.os.NetworkOnMainThreadException”?

    我在运行 RssReader 的 Android 项目时遇到错误 Code URL url new URL urlToRssFeed SAXParserFactory factory SAXParserFactory newInstance