我的应用程序中出现了 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 之前中断了该线程。