android - AssetManager$AssetInputStream.finalize() 在 10 秒后超时

标签 android performance crash samsung-mobile

我们看到以下崩溃流,全部发生在 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/

相关文章:

android - Android中按下后退按钮时如何停止视频

c# - Android UI 元素统一

performance - 为什么 memcpy() 的速度每 4KB 就会急剧下降?

performance - YCSB 理解输出

ios - 线程 1 : Signal Sigabrt iOS App Crash

javascript - 安卓 Cordova : Cannot set property 'text' of null

android - 在 Android 上的 SQLite 中查询和使用游标

c# - 避免带有后缀的字典中出现相同的键错误

iphone - iOS 应用程序启动时崩溃

xcode - 如何修复此崩溃? Xcode 6 swift