私のアプリでメモリリークに問題があり、LeakCanaryについて読んで設定しようとしました。LeakCanaryを使用してフラグメントを見ることができません(ClassCastExceptionエラー)
私のアプリケーションでは、2つのフラグメントを含む1つのアクティビティがあります。最初のフラグメントはリークのみを監視しようとしています。これは私がそれをセットアップする方法です:
この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のバージョンを任意のerrors..inを得ることはありませんか? – tsiro
minSdkVersion 19、 targetSdkVersion 24、compileSdkVersion 24.実際には、私はそれをうまく動作させることができるかどうかを知るためにそれを使いこなします。 – user2805004
私はちょうどアンドロイドマシュマロで私のアプリをテストするリークカナリーの依存関係を更新しました... 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 ' – tsiro