AssetManager$AssetInputStream.finalize() 10 秒后超时
Posted
技术标签:
【中文标题】AssetManager$AssetInputStream.finalize() 10 秒后超时【英文标题】:AssetManager$AssetInputStream.finalize() timed out after 10 seconds 【发布时间】:2015-02-07 12:55:40 【问题描述】:我们在 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)
帮助任何人?
【问题讨论】:
您是否偶然使用了 Crashlytics? @plinehan 我愿意。连接了吗? 这是我目前的理论。它在去年 3 月左右在 Crashlytics 更新后开始在我们的应用程序中发生,一些 Twitter 员工确认他们看到了类似的崩溃并最终恢复了 Crashlytics 版本。我已经更新到最新版本的 Crashlytics,我会看看它是否对这次崩溃有任何改进,但要过几周才能将它发布给公众。 我遇到了这样的崩溃,在检查手机类型后意识到这是黑莓手机,而不是真正的安卓手机。 有人找到任何解决方案吗?我在 SM-G900I,5.0 中也发现了问题 【参考方案1】:每当您使用 StreamReader/StreamWriter 类进行读/写操作时,请确保您在第一个 try
块内调用 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
块下还有另一个try
块,它仍然会抛出异常。
相反,您可以在 catch/finally
块中分配 ioStream = null
。
catch (Exception ex)
// If ioStream object is outside the try block
ioStream = null;
【讨论】:
以上是关于AssetManager$AssetInputStream.finalize() 10 秒后超时的主要内容,如果未能解决你的问题,请参考以下文章