当RewardedVideoAd关闭时,应用程序将关闭。在onAdClose上显示片段?

时间:2017-11-20 01:14:52

标签: java android android-fragments rewardedvideoad

首先:发生此问题时不会抛出异常。

我的应用目前正在Google Plays封闭式alpha程序中运行。当我使用Android Studio提供的模拟器或使用我自己的Galaxy A5测试应用程序时,一切正常并且符合预期。

现在我收到了我的Alpha测试人员的报告,他们的应用在关闭VideoAd后正在关闭。经过一段时间的调查,我意识到谷歌在执行Pre-Launch-Tests时使用的所有设备都有同样的问题(通过Google提供的视频可以看到)。

由于没有抛出异常,我完全不知道如何调试此行为。 以下是onRewarded方法的代码(监听器的其他方法不包含任何代码):

@Override
public void onRewarded(RewardItem rewardItem) {
    int amount = calculateAdReward(rewardItem.getAmount());
    updateCoins(amount);
    rewardedAmount = amount;
    rewarded = true;
}

rewardedAmount和rewarded是用于在活动onResume-method中实例化片段的私有字段:

@Override
protected void onResume() {
    super.onResume();
    mAdVideo.resume(this);
    if(rewarded){
        loadFragment(RewardFragment.newInstance(rewardedAmount);
        rewardedAmount = 0;
        rewarded = false;
    }
}

我的目标是在用户获得奖励后显示一个片段,其中包含奖励金额。我的第一次尝试如下:

@Override
public void onRewarded(RewardItem rewardItem) {
    int amount = calculateAdReward(rewardItem.getAmount());
    updateCoins(amount);
    loadFragment(RewardFragment.newInstance(amount));
}

失败了,因为我试图在调用saveInstanceState之后实例化一个片段。

1 个答案:

答案 0 :(得分:0)

经过一番研究后,我解决了我的问题。

我学到了什么: 永远不要在活动的生命周期方法中执行交易(onResume,...),因为当您到达交易代码时,活动可能还没有完全恢复。

而是在 onPostResume 方法中执行事务。调用此方法时,可以保证您的活动及其所有片段已完全恢复,并且“保存”以执行事务。

旁注:如果您不是必须,请不要在这些方法中执行交易。