NovelReaderAdDemo
NovelReaderAdDemo copied to clipboard
绘制带图片的广告页会特别卡
@jdwxp 同问,确实很卡顿,应该是dispatchDraw 方法引起的,请问你是如何解决的,
还在努力解决中。。。。
我还没解决,dispatchDraw注释了其实也还是卡顿的,应该还是有一个地方耗时了,导致页面绘制掉帧。
------------------ 原始邮件 ------------------ 发件人: "KotlinLan"[email protected]; 发送时间: 2019年7月10日(星期三) 下午2:52 收件人: "itwangyu/NovelReaderAdDemo"[email protected]; 抄送: "攥在〃手心"[email protected]; "Mention"[email protected]; 主题: Re: [itwangyu/NovelReaderAdDemo] 绘制带图片的广告页会特别卡 (#5)
@jdwxp 同问,确实很卡顿,应该是dispatchDraw 方法引起的,请问你是如何解决的,
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
我现在遇到如果是腾讯的原生广告,有时候会绘制不出来,只有一条白线,第二次就好了。
卡顿问题你解决了么?是做了哪里的修改吗?
------------------ 原始邮件 ------------------ 发件人: "KotlinLan"[email protected]; 发送时间: 2019年7月10日(星期三) 下午3:22 收件人: "itwangyu/NovelReaderAdDemo"[email protected]; 抄送: "攥在〃手心"[email protected]; "Mention"[email protected]; 主题: Re: [itwangyu/NovelReaderAdDemo] 绘制带图片的广告页会特别卡 (#5)
我现在遇到如果是腾讯的原生广告,有时候会绘制不出来,只有一条白线,第二次就好了。
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
卡顿的也没完全解决,你看看这样会不会好一点。
在dispatchDraw方法里面加一个判断,好像效果不怎么理想。你可以试试
case TxtPage.VALUE_STRING_AD_TYPE:
if (mPageAnim.mScroller.isFinished()&&getChildCount()>0){
if (shouldDraw) {
super.dispatchDraw(canvas);
shouldDraw=false;
Log.e("tag","==444444444===");
}
}
可能不行,还得想办法
嗯。确实还是卡顿,得想别的办法
------------------ 原始邮件 ------------------ 发件人: "KotlinLan"[email protected]; 发送时间: 2019年7月10日(星期三) 下午3:33 收件人: "itwangyu/NovelReaderAdDemo"[email protected]; 抄送: "攥在〃手心"[email protected]; "Mention"[email protected]; 主题: Re: [itwangyu/NovelReaderAdDemo] 绘制带图片的广告页会特别卡 (#5)
在dispatchDraw方法里面加一个判断,好像效果不怎么理想。你可以试试
case TxtPage.VALUE_STRING_AD_TYPE:
if (mPageAnim.mScroller.isFinished()&&getChildCount()>0){ if (shouldDraw) { super.dispatchDraw(canvas); shouldDraw=false; Log.e("tag","==444444444==="); } }
可能不行,还得想办法
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
嗯,解决了记得彼此分享一下
@jdwxp 有解决卡顿得问题吗?我试了怎么都卡顿
我准备换个思路,明天试试看,如果可以再跟你说------------------ 原始邮件 ------------------ 发件人: "KotlinLan"[email protected] 发送时间: 2019年7月10日(星期三) 晚上10:35 收件人: "itwangyu/NovelReaderAdDemo"[email protected]; 抄送: "jdwxp"[email protected];"Mention"[email protected]; 主题: Re: [itwangyu/NovelReaderAdDemo] 绘制带图片的广告页会特别卡 (#5)
@jdwxp 有解决卡顿得问题吗?我试了怎么都卡顿
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
减少dispatchDraw的次数 removeView换成setVisibility ?
@Dazzworld 我现在也是这样,还是卡顿,类似腾讯的原生广告还加载不出来,或者只能加载一半出来!
开始滑动时候允许一次dispatchDraw 滑动完就不限制dispatchDraw了
效果怎么样,有代码看看么
isRunning是判断是否开始滑动
shouldDraw 应该是在visibility状态改变前给true的
效果的话感觉还行 荣耀8上感觉不到太明显的卡顿 (广告最好预加载一下
在好一点的手机上确实不容易感知到,我用一台一千七左右的oppo手机,卡顿就很明显。我现在直接在外面把布局转换成图片,然后画到pageview上,然后再pageview上做事件监听来加广告逻辑。这个直接加view的方式还得继续想办法。。。。
关于卡顿的问题我实在能力有限,目前也没什么办法。我公司现在使用的是另一个阅读器,但也只是在架构上好了一些,加入广告的方式还是这样,所以在低端机上还是会卡顿。另外我也很久没研究了,现在业务不在小说这里。。。 另外你们上面说的只绘制一次或者把广告转换成图片都不太行得通,首先很多广告都是不能预加载的,比如广点通的广告,他里面其实是一个webview,所以这个广告view其实是在展示时候才开始加载里面的内容。如果只绘制一次后面的内容就显示不出来了。如果转换成图片的话,那广告是不会给你算作展示的,这样也不太行。只有原生广告会支持的比较好,原生广告可以预加载
确实是这样,腾讯的广告用的是webview,只有展示的时候才给你绘制,只绘制一次,广告就可能显示不全,重复调用dispatchDraw页面非常卡顿。现在不知道怎么搞了。
我的意思是开始滑动的时候才允许绘制一次,滑动的时候不断绘制肯定会卡。 滑动完成就不限制了。
确实是这样,腾讯的广告用的是webview,只有展示的时候才给你绘制,只绘制一次,广告就可能显示不全,重复调用dispatchDraw页面非常卡顿。现在不知道怎么搞了。
滑动的时候不要绘制 等翻页完了 再绘制 静止状态下 怎么卡顿都感觉不出来咯
即使等翻页完了 再绘制,腾讯的原生广告也还是会出现绘制不完整的情况。
身边如果有1000左右的低端机可以试试,绘制一次确实还是有卡顿,真令人头疼。。。------------------ 原始邮件 ------------------ 发件人: "Chen"[email protected] 发送时间: 2019年7月13日(星期六) 下午4:07 收件人: "itwangyu/NovelReaderAdDemo"[email protected]; 抄送: "jdwxp"[email protected];"Mention"[email protected]; 主题: Re: [itwangyu/NovelReaderAdDemo] 绘制带图片的广告页会特别卡 (#5)
确实是这样,腾讯的广告用的是webview,只有展示的时候才给你绘制,只绘制一次,广告就可能显示不全,重复调用dispatchDraw页面非常卡顿。现在不知道怎么搞了。
滑动的时候不要绘制 等翻页完了 再绘制 静止状态下 怎么卡顿都感觉不出来咯
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
@Override
public void onDescendantInvalidated(@NonNull View child, @NonNull View target) {
Log.d("czc", "onDescendantInvalidated: ");
shouldDraw = true;
super.onDescendantInvalidated(child, target);
}
@Override
protected void dispatchDraw(Canvas canvas) {
try {
if (mPageLoader == null) {
return;
}
if (shouldDraw){
Log.d("czc", "dispatchDraw: ");
super.dispatchDraw(canvas);
shouldDraw = false;
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
可以试试这样
试了一下,腾讯的广告还是卡顿。