当我显示一个Ad暴子间隙时,它显示得很好,并且我已经注册了一个侦听器来捕获onAdClosed事件,但问题是我实际上不能从事件中做任何与我的UI交互的事情,因为间隙已经关闭了它。
我创造的间隙是这样的:
storyAd = new InterstitialAd(this);
storyAd.setAdUnitId("ca-app-pub-xxxxxxxxxxxxxxxx");
storyAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
super.onAdClosed();
storyAd.loadAd(buildAdRequest());
if (prevMusicPlaying) {
toggleAudio();
}
loadNextPage();
}
});
storyAd.loadAd(buildAdRequest());我的清单上也有:
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />loadNextPage()调用崩溃是因为它试图创建一个新片段并将其添加到我的活动中,但它无法这样做,因为活动已被间隙暂停。所以我得到了一个例外:
Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1328)
at android.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1346)
at android.app.FragmentManagerImpl.popBackStack(FragmentManager.java:488)如何才能使InterstitialAd不以任何方式干扰现有的UI。需要很长时间才能让现有的UI处理各种活动/片段问题。
发布于 2017-02-19 19:37:40
所以,答案并不理想,但有效。
您可以在onAdClosed()中更新数据模型,但不更新任何与UI相关的内容。设置标志,以指示广告已关闭或任何您需要做的事情。
然后在主活动的onResume()中,更新UI。您可以从onAdClosed()或其他地方检查标志,然后更新GUI以反映新的状态。
发布于 2017-02-20 17:00:25
在显示间隙之前,您可能正在完成当前的活动,然后依赖间隙回调将其移动到下一页或屏幕。
这是不好的做法,因为你不希望你的应用程序流依赖于广告回调。有些场景广告根本看不出来
你需要做的就是打电话
loadNextPage();在你展示广告之前。当广告显示的时候,它就会以那种方式浏览应用程序屏幕,如果有广告,它就会接管,否则就不会影响应用程序。
https://stackoverflow.com/questions/42292880
复制相似问题