Вы не можете начинать нагрузку на разрушенные деятельность в изображения уровень мельче, используя скольжение



Я использую relativelayout для установки образа.Почему я не использовал imageview означает, внутри relativelayout изображения, я устанавливаю иконки.



Я не знаю, в чем именно заключается проблема в glide.Я разместил stacktrace и соответствующий код ниже:



Logcat:



 FATAL EXCEPTION: main
Process: com.app.steve, PID: 15928
java.lang.IllegalArgumentException: You cannot start a load for a destroyed activity
at com.bumptech.glide.manager.RequestManagerRetriever.assertNotDestroyed(RequestManagerRetriever.java:134)
at com.bumptech.glide.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:102)
at com.bumptech.glide.Glide.with(Glide.java:644)
at com.app.steve.TabMorePagesDetailActivity$allPageDetails.onPostExecute(TabMorePagesDetailActivity.java:1050)
at com.app.steve.TabMorePagesDetailActivity$allPageDetails.onPostExecute(TabMorePagesDetailActivity.java:885)
at android.os.AsyncTask.finish(AsyncTask.java:632)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)


TabMorePagesDetailActivity.java:



RelativeLayout rlPageCoverImg;

rlPageCoverImg = (RelativeLayout)findViewById(R.id.rl_club_cover_img);

@Override
protected void onPostExecute(String response) {
super.onPostExecute(response);

dialog.dismiss();
............

String coverIMGurl = cover_avatar_obj.getString("url");

Log.e("ImgURL", coverIMGurl);

Glide.with(TabMorePagesDetailActivity.this).load(coverIMGurl).asBitmap().signature(new StringSignature(String.valueOf(System.currentTimeMillis())))
.into(new SimpleTarget<Bitmap>(500, 500) {

@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
Drawable drawable = new BitmapDrawable(getResources(), resource);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
rlPageCoverImg.setBackground(drawable);
}
}
});

}else {

rlPageCoverImg.setBackgroundResource(R.drawable.bg_golive);

}



@Override
protected void onDestroy()
{
super.onDestroy();
Glide.clear(rlPageCoverImg);

}


Планировка.xml:



 <RelativeLayout
android:id="@+id/rl_club_cover_img"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="@drawable/cancel_image" >

// Inside this relativelayout image, I'm using buttons and icons


</RelativeLayout>
500   4  

4 ответов:

Использование:

Glide.with(getApplicationContext()).load(...)

Вместо:

Glide.with(TabMorePagesDetailActivity.this).load(...)

Надеюсь, что это решит вашу проблему~

Я получил тот же вопрос до нескольких дней.Я решил это для передачи контекстной памяти приложения имени текущего класса контекстной памяти.

Может быть, это поможет вам: -

Используйте этот код

 Glide.with(getApplicationContext())
           .load(coverIMGurl)
           .asBitmap()
           .signature(new StringSignature(String.valueOf(System.currentTimeMillis())))
                                    .into(new SimpleTarget<Bitmap>(500, 500) {....}

Даже если вы получаете этот вопрос, то прочитайте эту статью внимательно "https://github.com/bumptech/glide/issues/1097 "

обзор для этой проблемы: это проблема библиотеки Glide.

Вы можете просто проверить, уничтожен контекст или нет вручную, как;

if (context == null) {
    return
} else if (context !is Application) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        if (context is FragmentActivity) {
            if ((context as FragmentActivity).isDestroyed) {
                return
            }
        } else if (context is Activity) {
            if ((context as Activity).isDestroyed) {
                return
            }
        }
    }
}

Попробуйте это прежде чем загружать свои изображения с Glide, в моем случае mirefer это StorageReference, miimagen является графическое представление. Я решил эту проблему вот этим. Надеюсь, это вам поможет.

if (!this.isFinishing ()) {
                // Load the image using Glide
                Glide.with(YourActivity.this)
                        .using(new FirebaseImageLoader())
                        .load(mirefer)
                        .into(miimagen);
            }

Comments

    Ничего не найдено.