【发布时间】:2016-09-13 07:49:08
【问题描述】:
我的应用程序出现了一些性能问题(UI 渲染会冻结片刻),进行了一些挖掘,发现 PublisherAdView.loadAd() 方法在应用程序冷启动时在 Nexus 5 上执行大约需要 500-700 毫秒和 100-200 毫秒在随后的运行中。我预计最坏的情况是 10-15 毫秒。
为了验证这一点,我从这里下载了横幅示例:https://developers.google.com/mobile-ads-sdk/docs/dfp/android/banner 并修改了 MainActivity 以在单独的方法中执行 loadAd() 方法:
private PublisherAdView mAdView;
private PublisherAdRequest adRequest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
mAdView = (PublisherAdView) findViewById(R.id.ad_view);
adRequest = new PublisherAdRequest.Builder().build();
loadAd();
}
private void loadAd(){
long start = System.currentTimeMillis();
// Start loading the ad in the background.
mAdView.loadAd(adRequest);
long end = System.currentTimeMillis();
Log.d("MyActivity", "loadAd took "+(end - start)+" ms");
}
当同时展示更多广告(文章开头的横幅,介绍下方的矩形广告...)并且 UI 冻结半秒甚至更长时间时,问题变得更加明显,直到它们已加载。
在 RecyclerView 中显示广告并且 UI 在滚动期间冻结直到广告加载时也会出现此问题。
我在这里遗漏了什么还是这确实是 PublisherAdView 问题?
【问题讨论】:
标签: android performance google-dfp