Android AssetManager$AssetInputStream.finalize()在10秒后超时
我们看到以下一连串的崩溃,都是在安卓4.3三星Galaxy s3上发生的Android AssetManager$AssetInputStream.finalize()在10秒后超时,android,performance,crash,samsung-mobile,Android,Performance,Crash,Samsung Mobile,我们看到以下一连串的崩溃,都是在安卓4.3三星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:55
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类执行读/写操作时,请确保您正在调用
ioStream.close()
内的第一个try{}
块。大概是这样的:
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{}
块下有另一个try{}
块,它仍然会抛出上面的异常
相反,您可以在catch/finally{}
块中分配ioStream=null
catch (Exception ex) {
// If ioStream object is outside the try block
ioStream = null;
}
你是偶然使用Crashlytics的吗?@plinehan,是的。它有联系吗?这是我目前的理论。去年3月Crashlytics更新后,我们的应用程序开始出现这种情况,一些Twitter员工证实他们也看到类似的崩溃,最终恢复了Crashlytics版本。我已经更新到Crashlytics的最新版本,我会看看它是否对崩溃有任何改进,但要在发布前几周才会向公众公布。我遇到过这样的崩溃,在检查手机类型后意识到它是黑莓手机,不是真正的安卓手机。有人找到解决方案吗?我在SM-G900I,5.0中也发现了问题