我有一个列表视图,其中每个项目都有内置webview,播放嵌入的YouTube视频。 但问题是每当我按下后退按钮时,音频都会在后台继续播放。
我已经在activity的onpause方法上尝试了webview.onpause()。但它没有用。
可能是适配器类中viewholder.webview.onpause()的调用并未停止正在播放视频的实际viweholder。
如何识别应该将哪个viewholder.webview调用onpause()。
请找到以下代码。
enter code here
公共类VideoGallaryAdapter扩展了BaseAdapter {
private ArrayList<VideoItem> mItemList;
private Activity mContext;
private ViewHolder holder;
private String part2;
private WebView currentWebview;
int position;
public VideoGallaryAdapter(Activity context, ArrayList<VideoItem> itemList)
{
mContext = context;
mItemList = itemList;
}
@Override
public int getCount() {
return mItemList.size();
}
@Override
public Object getItem(int position) {
return mItemList.get(position);
}
@Override
public long getItemId(int position) {
return mItemList.get(position).hashCode();
}
private static class ViewHolder {
WebView displayYoutubeVideo;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
holder = null;
VideoItem item = mItemList.get(position);
String video_url = item.getmVideoUrl();
this.position = position;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.video_item_layout, null);
holder = new ViewHolder();
holder.displayYoutubeVideo = (WebView) convertView.findViewById(R.id.videoPlayer);
convertView.setTag(holder);
}
holder = (ViewHolder) convertView.getTag();
String[] parts = video_url.split("v=");
part2 = parts[1];
part2 = "https://www.youtube.com/embed/"+part2+"?rel=0";
displayYoutubeVideo.setWebViewClient(new WebViewClient());
displayYoutubeVideo.getSettings().setJavaScriptEnabled(true);
displayYoutubeVideo.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
displayYoutubeVideo.getSettings().setPluginState(WebSettings.PluginState.ON);
displayYoutubeVideo.setWebChromeClient(new WebChromeClient());
return convertView;
}
public void stopwebView(){
if(holder!=null && holder.displayYoutubeVideo!=null)
holder.displayYoutubeVideo.onPause();
}
public void resumeWebView(){
if(holder!=null && holder.displayYoutubeVideo!=null)
holder.displayYoutubeVideo.onResume();
}
}