使用 SurfaceView 在 activity 上显示插页式广告的行为

Behavior showing an Interstitial Ad on an activity using a SurfaceView

我在 activity.

中使用 SurfaceView 和其他视图

扩展 SurfaceView 的 class 还实现了 SurfaceHolder.Callback 回调方法:

我也在使用 Google Admob Mobile Ads SDK to show Interstitial 广告。

现在我遇到了两种不同的行为,开始由我开始的 child activity 和使用 Google Admob SDK 开始显示插页式广告。


  1. 我自己开始 child activity 的行为

我用

startActivity(new Intent(getBaseContext(), SettingsActivity.class));

一旦我 return 到主 activity.

,它会调用 SurfaceHolder.Callback 方法 surfaceDestroyedsurfaceCreated
  1. 从 Google Admob SDK
  2. 开始 interstitial ad 的行为

我用

if(_myInterstitialAd.isLoaded())
{
  _myInterstitialAd.show();
}

一旦我 return 到主 activity,它会调用 SurfaceHolder.Callback 方法 surfaceChangedsurfaceChanged。是的,它调用了 surfaceChanged 两次。

使用 Android Studio "Layout Inspector" 我看到启动的插页式广告也是 Activity (com.google.android.gms.ads.AdActivity)。所以我真的很想知道我什么时候开始自己的活动。


有人可以解释一下 Google 是如何实现这种只调用 surfaceChanged 方法的行为的吗?

也许我在 startActivity 调用中错过了 Intent 标志?

这是我的发现。如果有人能告诉我更准确的信息,我会很乐意接受 "full" 解释性答案。

Can someone explain how does Google achieve this behavior that only the surfaceChanged methods are called?

回答:调用surfaceChanged方法是因为Interstitial Ad全屏显示。我可以在 Googles description.

之后触发相同的行为

我强烈认为 AdActivity 实际上不是 activity(如果有人证明我错了我很高兴)这就是为什么 surfaceDestroyedsurfaceCreated显示插页式广告时不调用。