当 RewardedVideoAd 关闭时应用程序关闭。在 AdClose 上显示片段?
App closes when RewardedVideoAd is closed. Show Fragment onAdClose?
首先:出现这个问题时没有异常抛出。
我的应用目前 运行 在 Google 播放封闭的 alpha 程序。当我使用 Android Studio 提供的模拟器或使用我自己的 Galaxy A5 测试该应用程序时,一切正常且符合预期。
现在我收到 alpha 测试人员的报告,他们的应用程序在关闭 VideoAd 后关闭。经过一段时间的调查,我发现 google 在执行启动前测试时使用的所有设备都存在相同的问题(在 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 后实例化片段。
经过一番研究,我解决了我的问题。
我学到了什么:
切勿在 activity 的生命周期方法(onResume,...)内执行事务,因为当您到达您的交易代码。
相反,在 onPostResume 方法中执行交易。当这个方法被调用时,保证你的activity和它的所有分片已经完全恢复并且"save"执行一个事务。
旁注:如果不是绝对必要,请不要在这些方法中执行事务。
首先:出现这个问题时没有异常抛出。
我的应用目前 运行 在 Google 播放封闭的 alpha 程序。当我使用 Android Studio 提供的模拟器或使用我自己的 Galaxy A5 测试该应用程序时,一切正常且符合预期。
现在我收到 alpha 测试人员的报告,他们的应用程序在关闭 VideoAd 后关闭。经过一段时间的调查,我发现 google 在执行启动前测试时使用的所有设备都存在相同的问题(在 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 后实例化片段。
经过一番研究,我解决了我的问题。
我学到了什么: 切勿在 activity 的生命周期方法(onResume,...)内执行事务,因为当您到达您的交易代码。
相反,在 onPostResume 方法中执行交易。当这个方法被调用时,保证你的activity和它的所有分片已经完全恢复并且"save"执行一个事务。
旁注:如果不是绝对必要,请不要在这些方法中执行事务。