【问题标题】:Android interstitial ad seems to block AsyncTaskAndroid 插页式广告似乎阻止了 AsyncTask
【发布时间】:2021-12-27 08:10:47
【问题描述】:

我有两个活动(活动 A 和 B),当用户从活动 A 移动到活动 B 时,我的应用会显示插页式广告。在 Activity B 应用中有 AsyncTask,它使用 Room 从数据库中获取数据。

当活动 B 开始时没有任何广告或没有时间计数器的广告时,一切都可以正常工作。如果 Interstital Ad 有时间计数器,并且在它完成并且 Activity B 开始之后似乎没有从 AsyncTask 获取数据。

所以应该是图三,其实是图二。

活动 A

        if (id == R.id.menuCalendar) {

            if (mInterstitialAd != null) {
                mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() {
                    @Override
                    public void onAdDismissedFullScreenContent() {
                        // Called when fullscreen content is dismissed.
                        Intent intent = new Intent(getApplicationContext(), CalendarActivity.class);
                        startActivity(intent);
                    }

                    @Override
                    public void onAdFailedToShowFullScreenContent(AdError adError) {
                        // Called when fullscreen content failed to show.
                    }

                    @Override
                    public void onAdShowedFullScreenContent() {
                        // Called when fullscreen content is shown.
                        // Make sure to set your reference to null so you don't
                        // show it a second time.
                        mInterstitialAd = null;
                    }
                });
                mInterstitialAd.show(MainActivity.this);
            } else {
                Intent intent = new Intent(getApplicationContext(), CalendarActivity.class);
                startActivity(intent);
            }

          return true;
        } 

活动 B

mCalendarViewModel = new ViewModelProvider(this).get(CalendarViewModel.class);
mCalendarViewModel.getTodoListForMonth(new CalendarParams(year, month)).observe(this, new Observer<List<TODO>>() {
    @Override
    public void onChanged(List<TODO> todos) {
        DisplayCalendarInfo(todos);
    }
});
mCalendarViewModel.setDateFilter(new CalendarParams(year, month));

【问题讨论】:

  • 一些代码怎么样,你什么时候实例化和运行有广告时不起作用的ASyncTask?
  • 我会尽量关注@logancodemaker 的建议
  • 是的,但是.... LiveData 并不能完全替代 AsyncTask。是的,您应该使用它,但它可能与您的问题无关。
  • @Shark,你是对的。这个替换没有解决我的问题。此外,我注意到有时尽管有任何类型的广告,但一切都像魅力一样。这看起来很奇怪。我添加了一些代码。
  • minimal reproducible example 请,因为这是“我的代码有什么问题,顺便说一句我没有发布代码”类型的问题。

标签: android android-asynctask interstitial


【解决方案1】:

停止使用 AsyncTask,改用 LiveData。AsyncTask 已被弃用很长时间。

Read this 了解如何使用 Room 处理异步查询

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多