android:在recyclerview中暂停/停止webview
我正在尝试在android:在recyclerview中暂停/停止webview,android,webview,Android,Webview,我正在尝试在RecyclerView中显示youtube视频。一切都很好,但我遇到了这个问题(我是新手)。在阅读了一些帖子(,)之后,我现在意识到了一个问题,即即使应用程序在后台停止或运行,WebView线程也不会停止 我的问题是处理RecyclerView.Adapter中的WebView暂停。我已经创建了RecyclerView适配器,但我不知道如何在ViewHolder中停止WebView中的RecyclerView.adapter 如果有人能帮我的话。在RecyclerView.Adap
RecyclerView
中显示youtube视频。一切都很好,但我遇到了这个问题(我是新手)。在阅读了一些帖子(,)之后,我现在意识到了一个问题,即即使应用程序在后台停止或运行,WebView线程也不会停止
我的问题是处理RecyclerView.Adapter
中的WebView
暂停。我已经创建了RecyclerView适配器,但我不知道如何在ViewHolder
中停止WebView
中的RecyclerView.adapter
如果有人能帮我的话。在
RecyclerView.Adapter
中,有针对视图持有者的生命周期回调。多亏了@cwbowron,您应该能够在视图从窗口分离时覆盖以停止WebView
。为了更清楚,我将代码粘贴在这里。我们需要覆盖两种方法以使其按预期工作:
当此适配器创建的视图已附加到窗口时,将调用onViewAttachedToWindow()
当此适配器创建的视图已从其窗口分离时,将调用onViewDetachedFromWindow()
这就是我需要的。以下是我的实施:
public class RecyclerAdapterMessage extends RecyclerView.Adapter<RecyclerAdapterMessage.MessagesViewHolder> {
private Context mContext;
private ArrayList<ModelInboxFeed> modelInboxFeedArrayList;
private OnUserProfileClickListener mOnUserProfileClickListener;
public RecyclerAdapterMessage(Activity context, ArrayList<ModelInboxFeed> modelInboxFeedArrayList) {
...
}
/**
* Create new views (invoked by the layout manager)
*/
@Override
public RecyclerAdapterMessage.MessagesViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_card_normal, parent, false);
return new MessagesViewHolder(mContext, view);
}
/**
* Replace the contents of a view (invoked by the layout manager)
*/
@Override
public void onBindViewHolder(final RecyclerAdapterMessage.MessagesViewHolder holder, int position) {
...
}
/**
* Return the size of your data set (invoked by the layout manager)
*/
@Override
public int getItemCount() {
return modelInboxFeedArrayList.size();
}
public interface OnUserProfileClickListener {
void onUserProfileClick();
}
public class MessagesViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private WebView mWebView;
...
}
@Override
public void onViewDetachedFromWindow(MessagesViewHolder holder) {
super.onViewDetachedFromWindow(holder);
holder.mWebView.onPause();
}
@Override
public void onViewAttachedToWindow(MessagesViewHolder holder) {
super.onViewAttachedToWindow(holder);
holder.mWebView.onResume();
}
}
公共类RecyclerAdapterMessage扩展了RecyclerView.Adapter{
私有上下文;
私有arraylistmodelinboxfeedarraylist;
专用OnUserProfileClickListener mOnUserProfileClickListener;
public RecyclerAdapterMessage(活动上下文,ArrayList modelInboxFeedArrayList){
...
}
/**
*创建新视图(由布局管理器调用)
*/
@凌驾
public RecyclerAdapterMessage.MessagesViewHolder onCreateViewHolder(视图组父级,int-viewType){
View=LayoutFlater.from(parent.getContext())。充气(R.layout.item\u card\u normal,parent,false);
返回新消息viewholder(mContext,view);
}
/**
*替换视图的内容(由布局管理器调用)
*/
@凌驾
BindViewHolder上的public void(最终RecyclerAdapterMessage.MessagesViewHolder,int位置){
...
}
/**
*返回数据集的大小(由布局管理器调用)
*/
@凌驾
public int getItemCount(){
返回modelInboxFeedArrayList.size();
}
公共接口OnUserProfileClickListener{
void onUserProfileClick();
}
公共类MessagesViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
私有网络视图;
...
}
@凌驾
从窗口分离的视图上的公共无效(消息查看文件夹支架){
super.onview从窗口分离(支架);
holder.mWebView.onPause();
}
@凌驾
视图上的公共无效附加文档(消息查看文件夹持有者){
super.onViewAttachedToWindow(持有人);
holder.mWebView.onResume();
}
}
希望它能帮助有同样需求的人
快乐的编码 好的,先生。。我在上面。。我会尝试和更新你。谢谢……)天啊。。它工作起来很有魅力。。谢谢你,先生。。你救了我一天。。昨天,在过去的4-5个小时里,我一直在寻找并试图摆脱这个问题。。。但是当我尝试这个的时候,它就像。。哇……)