Промежуточное закрытие показывает предыдущий экран в течение 1-2 секунд перед переходом ко второму экрану (Android)

#java #android #admob #interstitial

#java #Android #admob #промежуточный

Вопрос:

У меня есть приложение, в котором есть два вида деятельности (основная деятельность и учебная деятельность). Первое действие содержит кнопку. Нажатие на него приведет пользователя к другому экрану. Перед переходом на другой экран отображается интерстициальное объявление. Проблема в том, что когда я закрываю промежуточное основное действие, оно отображается в течение 1-2 секунд, прежде чем перейти к учебной деятельности. Как это исправить?

Вот мой основной класс Activity:

 ​​public class MainActivity extends AppCompatActivity {
  AdsManager adsManager;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
       loadAds();
    }

  void loadAds() {
    adsManager = new AdsManager(this);
  }

  public void onClick(View view) {
   switch (view.getId()) {
     case R.id.learnButton:
       Intent intent = new Intent(this, LearningActivity.class);
       if (adsManager != null) {
         adsManager.showAd(intent);
       } else {
         startActivity(intent);
       }
       break;
}
 

Вот мой класс AdsManager:

 class AdsManager {
  private InterstitialAd mInterstitialAd;
  private Context context;

  AdsManager(Context context) {
    this.context = context;
    MobileAds.initialize(context, context.getString(R.string.adMobAppId));
    mInterstitialAd = new InterstitialAd(context);
    mInterstitialAd.setAdUnitId(context.getString(R.string.adMobUnitId));
    Bundle extras = new Bundle();
    extras.putBoolean("is_designed_for_families", true);
    AdRequest.Builder builder = new AdRequest.Builder()
      .addNetworkExtrasBundle(AdMobAdapter.class, extras)
      .tagForChildDirectedTreatment(true);
    mInterstitialAd.loadAd(builder.build());
  }

  void showAd(Intent intent) {
    if (mInterstitialAd.isLoaded()) {
    mInterstitialAd.show();
    mInterstitialAd.setAdListener(new AdListener() {
      @Override
      public void onAdClosed() {
        context.startActivity(intent);
      }
      });
    }
    else {
      context.startActivity(intent);
    }
  }
}​
 

Комментарии:

1. это происходит потому, что вы загружаете ad перед загрузкой следующей страницы и ее запрещенной политикой внедрения interstitial. Обратитесь к этой ссылке support.google.com/admob/answer/6201362?hl=en

2. Я загружаю объявление перед загрузкой следующей страницы, потому что, если объявление не будет загружено до того, как пользователь нажмет кнопку, будет задержка в показе объявления, когда пользователь переходит на второй экран, что приведет к неожиданному показу объявления, когда пользователь уже находится на втором экране. Это было бы нарушением политики.