Android,AdMob:AdMob广告刷新破坏帧速率
我正在开发一款游戏,它进展得非常顺利。不过,我确实对AdMob广告有点问题。每当广告刷新或它绘制广告的不同方面时,我的帧速率就会急剧下降,几乎使游戏无法播放。这是我用来装广告的东西Android,AdMob:AdMob广告刷新破坏帧速率,android,admob,Android,Admob,我正在开发一款游戏,它进展得非常顺利。不过,我确实对AdMob广告有点问题。每当广告刷新或它绘制广告的不同方面时,我的帧速率就会急剧下降,几乎使游戏无法播放。这是我用来装广告的东西 ad = new AdView(this, AdSize.BANNER, "..."); AdRequest adRequest = new AdRequest(); adRequest.addTestDevice("..."); adRequest.addTestDevice(".
ad = new AdView(this, AdSize.BANNER, "...");
AdRequest adRequest = new AdRequest();
adRequest.addTestDevice("...");
adRequest.addTestDevice("...");
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
lp.addRule(RelativeLayout.CENTER_HORIZONTAL);
ad.setLayoutParams(lp);
RelativeLayout layout = new RelativeLayout(this);
layout.addView(renderView);
layout.addView(ad);
ad.loadAd(new AdRequest());
setContentView(layout);
我在SurfaceView
上呈现广告的解决方案是将其添加到RelativeLayout
中,并将SurfaceView
和AdView
添加到它。这一切都可以很好地工作,但每次广告刷新(UI或新的广告请求)时,它都会阻塞UI线程,这反过来又会减慢我的渲染线程
有没有一种方法可以使所有这些工作很好地结合在一起,使AdView的所有工作都与主线程分开完成?我不太确定是否要从另一个线程动态更新当前布局
谢谢你的帮助。我也有这个问题。我发现这是由谷歌广告引起的,谷歌广告在广告改变时会产生动画,而不是静态的Admob横幅广告,这些广告根本不会产生动画。admob应用程序设置中有一个用于控制是否使用谷歌广告的设置。。。试着关闭它,看看它是否有什么不同。很抱歉再次提出这个问题,但我还是遇到了同样的问题,并发现在
AdView
的内部网络视图上打开
会使问题变得更为顺利
我已经证实,在安卓5.1上运行的8.4.0版本中,这一点在我这边是可行的,尽管这一解决方案可能会使更多具有更强CPU的设备受益
在我的活动简历中,我有
/*
* The AdView attaches it's internal WebView only once it
* has been loaded, so we need to wait until that happens.
*/
adView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
runOnWebView(mAdView, new WebViewAction() {
@Override
public void run(WebView view) {
// the most important part is here
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
});
}
});
runOnWebView方法和WebViewAction接口定义为
/**
* Recursively searches for a WebView instance located in
* the hierarchy of view and invokes the callback method on
* action with the found instance.
*/
private void runOnWebView(View view, WebViewAction action) {
if (view instanceof WebView) {
action.run((WebView) view);
return;
}
if (view instanceof ViewGroup) {
final ViewGroup parent = (ViewGroup) view;
for (int i = 0; i < parent.getChildCount(); i++) {
runOnWebView(parent.getChildAt(i), action);
}
}
}
private interface WebViewAction {
void run(WebView view);
}
/**
*递归搜索位于中的WebView实例
*视图的层次结构,并调用
*对找到的实例执行操作。
*/
私有void runOnWebView(视图视图、WebViewAction操作){
if(查看WebView的实例){
运行((WebView)视图);
返回;
}
if(视图组的视图实例){
最终视图组父视图=(视图组)视图;
对于(int i=0;i
这确实有帮助。在将Adsense整合到广告中的同时,我还能做些什么来解决这个问题吗?你可以尝试调整线程优先级。尝试降低主线程的优先级,这样可以减少渲染线程和游戏引擎线程的冲突。理想情况下,你的UI线程只需以较低的优先级更新该广告。我一直在搜索,但找不到该设置的位置。我正在使用新的apps.admob.com网站。此设置选项是否仍然存在?