1.ADSWindowManager单例中防止所有视频广告位都无法播放进入播放死循环

2.自定义组件在layout目录缺失xml文件进行补充
This commit is contained in:
2025-12-17 20:50:14 +08:00
parent 540e24d5eb
commit 9fdeb528cc
3 changed files with 45 additions and 4 deletions

View File

@@ -36,8 +36,8 @@ public class ADSWindowManager implements HomeMultiView.MultiViewListener{
/**是否开启播放模式*/ /**是否开启播放模式*/
private boolean isPlayMode=false; private boolean isPlayMode=false;
//防止所有视频广告位都无法播放 进入startVideo()死循环
private boolean hasOncePlayOk;
private ADSWindowManager(Context context){ private ADSWindowManager(Context context){
this.mContext =context; this.mContext =context;
mHandler=new MyHandler(Looper.getMainLooper()); mHandler=new MyHandler(Looper.getMainLooper());
@@ -66,7 +66,7 @@ public class ADSWindowManager implements HomeMultiView.MultiViewListener{
for (MultiView multiView:mMultiViewList){ for (MultiView multiView:mMultiViewList){
multiView.setMultiViewListener(this); multiView.setMultiViewListener(this);
} }
if(hasOncePlayOk) hasOncePlayOk=false;
} }
public void startVideo(){ public void startVideo(){
isPlayMode =true; isPlayMode =true;
@@ -121,19 +121,24 @@ public class ADSWindowManager implements HomeMultiView.MultiViewListener{
if(multiView instanceof AdMultiView){ if(multiView instanceof AdMultiView){
LogUtils.loge(" ad playing id:" + adInfo.getId()); LogUtils.loge(" ad playing id:" + adInfo.getId());
multiView.onVideoRestart(adInfo.getLocalFilePath()); multiView.onVideoRestart(adInfo.getLocalFilePath());
hasOncePlayOk=true;
return; return;
} }
File file = new File(adInfo.getLocalFilePath()); File file = new File(adInfo.getLocalFilePath());
if (file.isFile() && file.exists()) { if (file.isFile() && file.exists()) {
LogUtils.loge(" ad playing id:" + adInfo.getId()); LogUtils.loge(" ad playing id:" + adInfo.getId());
multiView.onVideoRestart(adInfo.getLocalFilePath()); multiView.onVideoRestart(adInfo.getLocalFilePath());
hasOncePlayOk=true;
return; return;
} }
} }
}catch (Exception e){ }catch (Exception e){
e.printStackTrace(); e.printStackTrace();
LogUtils.loge("error file is not exists:"+adInfo.getLocalFilePath()); LogUtils.loge("error file is not exists:"+adInfo.getLocalFilePath());
if(mMultiViewList.size()-1==currentADIndex&&!hasOncePlayOk){
hasOncePlayOk=false;
return;
}
} }
currentADIndex++; currentADIndex++;
if (currentADIndex >= mMultiViewList.size()) { //所有文件都不存在,跳出循环,都不播放 if (currentADIndex >= mMultiViewList.size()) { //所有文件都不存在,跳出循环,都不播放

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/layout_rect_group"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="MissingDefaultResource">
<RelativeLayout
android:id="@+id/multi_inside"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:id="@+id/img_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"/>
<TextView
android:id="@+id/tx_view"
android:layout_width="match_parent"
android:layout_height="53dp"
android:background="@drawable/item_text_bg"
android:textSize="15sp"
android:paddingStart="16dp"
android:paddingTop="12dp"
android:paddingBottom="19dp"
android:gravity="left"
android:textColor="@color/btn_text_color"/>
<RelativeLayout
android:id="@+id/ad_root"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
</RelativeLayout>

View File

@@ -129,6 +129,7 @@ public class DownLoadTaskThread implements Runnable {
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
LogUtils.loge("download Exception===>"+e.getMessage()); LogUtils.loge("download Exception===>"+e.getMessage());
// TODO: 2025/12/17 异常检验-tmp是否存在不存在再建一个0KB临时空文件可保证 文件以后一定能下载下来
if (observer != null) { if (observer != null) {
observer.onError(bean, bean.getTaskId(), e.getMessage()); observer.onError(bean, bean.getTaskId(), e.getMessage());
} }