【发布时间】:2019-11-07 11:46:33
【问题描述】:
当我的活动被泄露时,我会收到通知,即使活动都是空的。
这是踪迹:
ApplicationLeak(className=com.bcx.tracker.ui.login.LoginActivity, leakTrace=
┬
├─ android.app.Activity$1
│ Leaking: UNKNOWN
│ Anonymous subclass of android.app.IRequestFinishCallback$Stub
│ GC Root: Global variable in native code
│ ↓ Activity$1.this$0
│ ~~~~~~
╰→ com.bcx.tracker.ui.login.LoginActivity
Leaking: YES (Activity#mDestroyed is true and ObjectWatcher was watching this)
key = fc3d8e13-c51c-4ff8-995f-4e0da90f085b
watchDurationMillis = 7889
retainedDurationMillis = 2886
key = b809b94b-fd3c-4d26-bda4-7f175624c3c3
, retainedHeapByteSize=166095)
我刚刚在build.gradle中添加了依赖
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-beta-3'
这里有什么我遗漏的吗?
我已经通过this stackoverflow link 没有帮助。
我的设备:
一加 7,安卓 10
模拟器,安卓10
【问题讨论】:
-
即使我所有的活动都是空的,你是什么意思?避免内存泄漏的最佳规则是避免在其他类中保存您的活动或片段的实例。你的类应该对你的视图元素一无所知。相反,您的 Activity 或 Fragment 应该向它的演示者询问它需要按需要运行的任何内容。
-
这是一个完全没有额外代码的应用程序。我刚刚使用默认基本模板制作了两个活动,并且没有在任何地方保存任何实例。
-
一加 7T 中仍然存在泄漏,我认为这是 Oxygen OS 的一个错误。
-
我遇到了同样的问题三星 m01 android 10,你有解决办法吗?
标签: android memory-leaks leakcanary