[英]Chasing origin of LeakedCloseableViolation in Android
我花了一天半的时间试图在我的应用程序中寻找 LeakedCloseableViolation 的起源,该应用程序是针对 API v32 开发的。
我启用了严格模式:
StrictMode.setVmPolicy( new StrictMode.VmPolicy.Builder()
.detectLeakedClosableObjects()
.penaltyListener( this.getMainExecutor(), ( Violation v ) -> {
v.fillInStackTrace();
v.printStackTrace();
} )
.build());
在 LogCat 我得到
W/System.err: android.os.strictmode.LeakedClosableViolation: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. Callsite: close
W/System.err: at com.wattthis.reflowmate.App.lambda$onCreate$0(App.java:30)
W/System.err: at com.wattthis.reflowmate.App$$ExternalSyntheticLambda0.onVmViolation(Unknown Source:0)
W/System.err: at android.os.StrictMode.lambda$onVmPolicyViolation$3(StrictMode.java:2462)
W/System.err: at android.os.StrictMode$$ExternalSyntheticLambda3.run(Unknown Source:4)
W/System.err: at android.os.Handler.handleCallback(Handler.java:942)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err: at android.os.Looper.loopOnce(Looper.java:201)
W/System.err: at android.os.Looper.loop(Looper.java:288)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:7898)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
但是我在堆栈跟踪中没有看到任何关于问题根源的线索。
我审核了我的代码,没有看到任何未正确关闭的流或观察者。
该错误是完全可重现的。
我只是打开应用程序,然后在主 Activity 上保持打开状态 30 秒。 我根本不碰手机。
30 秒后,出现此错误。
任何人都知道如何获得有关导致此问题的原因的更多信息?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.