1

我一直在使用适配器中的Glide,其中我将Activity上下文从Activity类传递给了我的片段(视图在片段中)。当用户在关闭后尝试重新启动时,我检查了大约30台设备和3-5台设备中的应用程序崩溃。可能是什么原因以及如何处理这个异常? 我不想在Glide中使用Applicationcontext,因为这将保持滑翔资源。有没有其他解决方法?重新开放时出现滑动问题+无法从已销毁的活动中加载

logcat的

                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.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:87) 

                     at com.bumptech.glide.Glide.with(Glide.java:629) 

                     at com.trial.project.Adapter.LiveUserListAdapterInside.onBindViewHolder(LiveUserListAdapterInside.java:68) 

                     at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6356) 

                     at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6389) 

                     at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5335) 

                     at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5598) 

                     at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5440) 

                     at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5436) 

                     at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2224) 

                     at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1551) 

                     at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1511) 

                     at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:595) 

                     at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3583) 

                     at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3312) 

                     at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1618) 

下面的代码滑翔装载

Glide.with(itemHolder.ImageView.getContext()).load(current.getPhotoUrl()).bitmapTransform(new CropCircleTransformation(context)) 
        .placeholder(R.drawable.x2) 
        .into(itemHolder.friendImageView); 

下面代码OnBackPressed()

// ... ... 
    ... .. 
finishAffinity(); 
+0

添加logcat的请。 –

+0

发布你正在得到的错误 – Anonymous

+0

不幸的是,我没有这些设备的具体logcat,我们不能在我们的官方测试设备中重新创建错误,但它是类似于下面所述和出现在Glide.load行中的错误... java.lang.IllegalArgumentException:您无法为被销毁的活动启动加载 – user232803

回答

0

每当你要加载的图像我猜活动WIL处于被破坏状态。当您尝试加载图像并移动到不同的活动时,会发生这种情况然后进行空检查,看看是否仍有活动存在,并且图像引用存在。

还用itemHolder.friendImageView.getContext()替换itemHolder.ImageView.getContext()。

检查加载图像

if(!this.isDestroyed() && friendImageView!=null && current.getPhotoUrl()!=null){ 
     Glide.with(itemHolder.friendImageView.getContext()) 
       .load(current.getPhotoUrl()) 
       .bitmapTransform(new CropCircleTransformation(context)) 
       .placeholder(R.drawable.x2) 
       .into(itemHolder.friendImageView); 
    } 
+0

我不清楚这个'itemHolder.ImageView.getContext()与itemHolder.ImageView.getContext()'。将检查为空虽然 – user232803

+0

对不起,它是friendImageView.The上下文创建nullPointerexception.Either或使用getApplicationContext()或 – Anonymous

+0

此外,如果!this.isDestroying()不工作!this.isFinishing()应该解决您的问题 – Anonymous

0

这个编辑的代码使用滑翔始终使用Activity context同时加载图像。

,同时使用滑翔与adapters你可以从活动本身的构造函数使用Glide.with(this)合格adapterRequestManager对象。

在启动Glide载入之前,检查activity/fragment是否可见始终安全。

因此,对于活动时间:

if(!this.isFinishing()){ 
    // Initialise Glide here 
} 

对于片段:

MyFragmentClass mFragment = (MyFragmentClass) getSupportFragmentManager().findFragmentByTag("testID"); 
if (mFragment != null && mFragment.isVisible()) { 
    // Initialise Glide here 
} 

编号:https://android.jlelse.eu/using-glide-few-tips-to-be-a-pro-60f41e29d30a

相关问题