我们看到以下崩溃流,全部发生在 Android 4.3 Samsung Galaxy s3 上
java.util.concurrent.TimeoutException: android.content.res.AssetManager$AssetInputStream.finalize() timed out after 10 seconds
at android.content.res.AssetManager$AssetInputStream.close(AssetManager.java:559)
at android.content.res.AssetManager$AssetInputStream.finalize(AssetManager.java:592)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:187)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:170)
at java.lang.Thread.run(Thread.java:841)
帮助任何人?
最佳答案
每当您使用 StreamReader/StreamWriter 类进行读/写操作时,请确保您在第一个 try{}
block 中调用 ioStream.close()
。像这样:
AssetManager AssetManager = mContext.getAssets();
try {
InputStream is = AssetManager.open("sample.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
} catch (Exception ex) {
ex.printStackTrace();
}
即使您在 catch/finally {}
block 下有另一个 try{}
block ,它仍然会抛出上述异常。
相反,您可以在 catch/finally {}
block 中分配 ioStream = null
。
catch (Exception ex) {
// If ioStream object is outside the try block
ioStream = null;
}
关于android - AssetManager$AssetInputStream.finalize() 在 10 秒后超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27382222/