FragmentStatePagerAdapterがリークしていて、LeakCanaryを使用している理由がわかりません

ダーティデイブ

LeakCanaryを使用してリークを検出していて、この1つのリークが発生し続けていますが、なぜ発生しているのかわかりません。

FragmentStatePagerAdapterがあり、デフォルトのオフスクリーン制限である各サイドに1つずつロードしています。

フラグメントにあるのは、Glideを使用して画像をロードすることだけです。

@Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_viewpager_image_view, container, false);
        ButterKnife.bind(this, view);


        Glide.with(mContext).load(mUrl)
                .apply(RequestOptions.centerInsideTransform())
                .listener(new RequestListener<Drawable>() {
                    @Override
                    public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {

                        mProgressBar.setVisibility(View.INVISIBLE);
                        errorImageView.setVisibility(View.VISIBLE);
                        errorTextView.setVisibility(View.VISIBLE);

                        Glide.with(mContext)
                                .load(R.drawable.snail)
                                .apply(RequestOptions.centerInsideTransform())
                                .into(errorImageView);

                        String text = "Failed to load image \n" + mUrl;
                        errorTextView.setText(text);
                        return false;
                    }

                    @Override
                    public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                        mProgressBar.setVisibility(View.INVISIBLE);
                        return false;
                    }
                })
                .into(mImage);

        return view;


    }

LeakCanaryメッセージはスクロールするたびにポップアップしないので、エラーを再現する方法を正確に特定できないため、イライラします。LeakCanaryメッセージがポップアップする前に、30〜50枚の画像をスクロールして読み込むことができます。

├─ e.com.app.ui.viewpager.ViewpagerImageFragment$1 instance
│    Leaking: UNKNOWN
│    Anonymous class implementing com.bumptech.glide.request.RequestListener
│    ↓ ViewpagerImageFragment$1.this$0
│                               ~~~~~~
╰→ e.com.app.ui.viewpager.ViewpagerImageFragment instance
​     Leaking: YES (ObjectWatcher was watching this because e.com.app.ui.viewpager.ViewpagerImageFragment received Fragment#onDestroy() callback and Fragment#mFragmentManager is null)
​     key = 3e232914-78d0-457c-9ca5-c6e9c8f92c55
​     watchDurationMillis = 7300
​     retainedDurationMillis = 2300
​     key = f745901e-5222-42db-b594-f07a47b84788

リークの原因は正確には何ですか?

Ahmed I. Khalil

を使用しますGlide.with(this)。ここthisで、はフラグメントインスタンスであり、グライドリクエストはアクティビティではなくフラグメントライフサイクルに関連付けられます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

FragmentStatePagerAdapterがリークしていて、LeakCanaryを使用している理由がわかりません

分類Dev

BottomSheetDialogFragmentは、LeakCanary 2でメモリリークを示していますが、理由がわかりません。

分類Dev

response.onを使用している理由がわかりません

分類Dev

使用済みのjdbc接続がリークしているようで、理由がわかりません

分類Dev

Pythonの出力がループしている理由がわかりません

分類Dev

Webサイトをスキャンして、開いているポートを確認しようとしています。ループを使用しているときにこのロジックが機能しない理由がわかりません

分類Dev

Cのヒープが破損していて、理由がわかりません

分類Dev

動的スクープを使用して変数がこの順序で非表示になっている理由がわかりません

分類Dev

Lambdaを使用して並べ替えると、Javaが機能しない理由がわかりません

分類Dev

java.lang.NullPointerExceptioを取得している理由がわかりません

分類Dev

フィルターを使用していますか?このソリューションが機能する理由がわかりません

分類Dev

ループが停止していますが、理由がわかりません

分類Dev

Python(Pyramidフレームワーク)がリクエスト間でデータを保持しているので、理由がわかりません

分類Dev

ループが継続していない理由がわかりません

分類Dev

Javaのスキャナーが「NoSuchElementException」をスローしている理由がわかりません

分類Dev

私のgroupbyが失敗している理由がわかりません

分類Dev

yaml.load が爆発している理由がわかりません

分類Dev

clearInterval()関数が機能していません。理由がわかりません。

分類Dev

範囲外の例外を取得していますが、エラーが発生している理由がわかりません

分類Dev

このコードがバッファリングされているように見える理由がわかりません。バッファリングされていないI / Oを使用しています。

分類Dev

ランダムにループしている間ループします。理由がわかりません。

分類Dev

オブジェクトを正しくエクスポートしていませんか?JSを初めて使用する場合、テストが失敗する理由がわかりません

分類Dev

このdo-whileループが機能していませんが、理由がわかりません

分類Dev

MobXを使用して入力が更新されない理由がわかりません

分類Dev

ループからのデータが一致していません。理由がわかりません。

分類Dev

ラムダスキームが機能している理由がわかりません

分類Dev

ifステートメントが機能している理由がわかりません

分類Dev

アプリがクラッシュしています..logcatで説明を見つけましたが、理由がわかりません

分類Dev

高さautoのdivが親の高さ全体を取得している理由がわかりません

Related 関連記事

  1. 1

    FragmentStatePagerAdapterがリークしていて、LeakCanaryを使用している理由がわかりません

  2. 2

    BottomSheetDialogFragmentは、LeakCanary 2でメモリリークを示していますが、理由がわかりません。

  3. 3

    response.onを使用している理由がわかりません

  4. 4

    使用済みのjdbc接続がリークしているようで、理由がわかりません

  5. 5

    Pythonの出力がループしている理由がわかりません

  6. 6

    Webサイトをスキャンして、開いているポートを確認しようとしています。ループを使用しているときにこのロジックが機能しない理由がわかりません

  7. 7

    Cのヒープが破損していて、理由がわかりません

  8. 8

    動的スクープを使用して変数がこの順序で非表示になっている理由がわかりません

  9. 9

    Lambdaを使用して並べ替えると、Javaが機能しない理由がわかりません

  10. 10

    java.lang.NullPointerExceptioを取得している理由がわかりません

  11. 11

    フィルターを使用していますか?このソリューションが機能する理由がわかりません

  12. 12

    ループが停止していますが、理由がわかりません

  13. 13

    Python(Pyramidフレームワーク)がリクエスト間でデータを保持しているので、理由がわかりません

  14. 14

    ループが継続していない理由がわかりません

  15. 15

    Javaのスキャナーが「NoSuchElementException」をスローしている理由がわかりません

  16. 16

    私のgroupbyが失敗している理由がわかりません

  17. 17

    yaml.load が爆発している理由がわかりません

  18. 18

    clearInterval()関数が機能していません。理由がわかりません。

  19. 19

    範囲外の例外を取得していますが、エラーが発生している理由がわかりません

  20. 20

    このコードがバッファリングされているように見える理由がわかりません。バッファリングされていないI / Oを使用しています。

  21. 21

    ランダムにループしている間ループします。理由がわかりません。

  22. 22

    オブジェクトを正しくエクスポートしていませんか?JSを初めて使用する場合、テストが失敗する理由がわかりません

  23. 23

    このdo-whileループが機能していませんが、理由がわかりません

  24. 24

    MobXを使用して入力が更新されない理由がわかりません

  25. 25

    ループからのデータが一致していません。理由がわかりません。

  26. 26

    ラムダスキームが機能している理由がわかりません

  27. 27

    ifステートメントが機能している理由がわかりません

  28. 28

    アプリがクラッシュしています..logcatで説明を見つけましたが、理由がわかりません

  29. 29

    高さautoのdivが親の高さ全体を取得している理由がわかりません

ホットタグ

アーカイブ