【问题标题】:What cause "java.io.IOException: BufferedReader is closed" on android?是什么导致android上的“java.io.IOException:BufferedReader is closed”?
【发布时间】:2013-05-23 09:07:59
【问题描述】:

我的应用程序中出现了 ANR。根据日志,我发现我的应用程序被信号 3 杀死。在堆栈跟踪中,我得到了该代码的信息:

 if (mReceiver != null && mReceiver.isAlive()){
       mReceiver.interrupt();
       mReceiver = null;                
 }
 if (mReader != null) {
      mReader.close();// this line throws exception
      mReader = null;
 }

需要很长时间。 在日志中,我还获得了有关上述标记线引发的异常的信息。

05-17 14:04:48.343  3327  6535 W System.err: java.io.IOException: BufferedReader is closed 
05-17 14:04:48.343  3327  6535 W System.err: at java.io.BufferedReader.checkNotClosed(BufferedReader.java:204)
05-17 14:04:48.343  3327  6535 W System.err: at com.sec.android.app.radio.Receiver.run(Receiver.java:40)

但在http://developer.android.com/reference/java/io/BufferedReader.html#close%28%29 是:

如果此阅读器已关闭,则不执行任何操作。

那么为什么会抛出这个异常呢?

我仅在 http://yatse.leetzone.org/redmine/attachments/258/alogcat.2013-04-05-13-15-17+0100.txt#.UZ3YfNmwf5A 上发现的非常相似的日志

回答以下问题:我将 mReader 共享给一个线程:mReceiver,但我在关闭 mReader 之前中断了该线程。

【问题讨论】:

  • 您是否跨线程共享阅读器?这是完整的堆栈跟踪吗?
  • 您是否使用HTTPConnection Stream 读取数据?
  • 发布您使用 BufferedReader 读取的代码。
  • android 2.3 及更高版本中的Bug code.google.com/p/android/issues/detail?id=14562
  • 一些方法接收一个 Reader 参数,并在文件结束时自行关闭流。官方 Java 可以有一个额外的关闭,甚至在 javadoc 中也是这样说的。所以特定于 Android。

标签: java android io bufferedreader


【解决方案1】:

什么原因导致android上出现“java.io.IOException: BufferedReader is closed”?

导致它在任何平台上的原因是关闭了BufferedReader或其底层资源,然后继续使用它。

【讨论】:

    猜你喜欢
    • 2020-08-11
    • 2017-03-31
    • 2017-09-07
    • 1970-01-01
    • 2012-06-05
    • 2012-04-26
    • 1970-01-01
    • 2018-11-12
    • 2015-11-11
    相关资源
    最近更新 更多