【发布时间】:2017-02-02 22:07:44
【问题描述】:
我的应用程序存在内存泄漏问题,我阅读了有关 LeakCanary 的信息,因此我尝试对其进行设置。
在我的应用程序中,我有一个包含两个片段的活动,我试图只观察第一个片段是否泄漏。我是这样设置的:
我制作了这个 Java 类来包含 LeakCanary 逻辑。
public class ExampleApplication extends Application {
public static RefWatcher getRefWatcher(Context context) {
ExampleApplication application = (ExampleApplication) context.getApplicationContext();
return application.refWatcher;
}
private RefWatcher refWatcher;
@Override public void onCreate() {
super.onCreate();
refWatcher = LeakCanary.install(this);
}
}
然后我将它添加到我的片段的 OnDestroy 中:
@Override public void onDestroy() {
super.onDestroy();
RefWatcher refWatcher = ExampleApplication.getRefWatcher(getActivity());
refWatcher.watch(MainFragment.this);
}
当我销毁包含该片段的活动时,我收到以下错误:
Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to projectname.ExampleApplication
我已广泛搜索 Google 和文档,但找不到遇到此错误的其他人。我不知道该怎么做,但我真的很想使用这个工具。如果有人有任何建议,我将不胜感激。
【问题讨论】:
-
很奇怪..我有完全相同的代码,我没有收到任何错误..你的应用程序在哪个 android 版本上运行?
-
minSdkVersion 19, targetSdkVersion 24, compileSdkVersion 24。这确实很奇怪,我会一直搞砸它,看看能不能让它工作。
-
我刚刚更新了泄漏金丝雀依赖项以在 android Marshmallow 中测试我的应用程序... debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4' releaseCompile 'com.squareup.leakcanary:leakcanary-android -no-op:1.4' testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4'
标签: java android android-fragments memory-management memory-leaks