GlideのassertNotDestroyedクラッシュの原因と対処方法 | Androidアプリ開発

先日、公開しているアプリで以下の
「com.bumptech.glide.manager.RequestManagerRetriever.assertNotDestroyed 」というGlideのクラッシュが多数発生していました。
com.bumptech.glide.manager.RequestManagerRetriever.assertNotDestroyed のエラー
色々と調査をしたところ、その原因と対処方法が分かったので、それをこの記事で紹介します。
スポンサーリンク

原因

このクラッシュの原因はGlideに渡しているActivityオブジェクトがnullないし終了済みの場合に発生します。

具体的には以下のようなコードのActivityオブジェクトです。
Glide.with(activity) //←このactivityオブジェクト
    .load(uri)
    .into(iv);
例えば、別スレッドでGlideを使用している場合で、
Activityが終了しているにもかかわらず、Glideで画像を表示しようとするとクラッシュします。
スポンサーリンク

対処方法

対処方法はonDestoryがコールされたことを判別する変数を導入し、Glideの画像表示を阻止することです。

サンプルコードは以下です。
private boolean isGlideProhibited = false;

@Override
protected void onDestroy() {
    super.onDestroy();

    isGlideProhibited = true;

    //...
}


//別スレッド内
if(!isGlideProhibited) Glide.with(activity)
                           .load(uri)
                           .into(iv);
スポンサーリンク

まとめ

この記事では「com.bumptech.glide.manager.RequestManagerRetriever.assertNotDestroyed 」というGlideのクラッシュの原因と対処方法を紹介しました。
Androidアプリ開発
スポンサーリンク
Androidアプリ開発 記事一覧
Androidアプリ開発 記事一覧
Androidアプリ開発の記事一覧を以下にまとめています。
良かったらご覧ください。

Androidアプリ開発 記事一覧
カテゴリ広告: Androidアプリ開発
スポンサーリンク: Androidアプリ開発を個人レッスンで学ぶなら...?
Androidアプリ開発は一人で学んでいても限界があります。
そこでオススメなのがオンラインでAndroidアプリ開発を学べる「コードキャンプ」。
個人レッスンで丁寧に教えてくれます。

無料レッスン体験も可能なので、まずは無料体験から試してみてはいかがでしょうか?

Androidアプリ開発個人レッスン
一般広告: モバイルバッテリー
スポンサーリンク
Aresei-note
タイトルとURLをコピーしました