我正在尝试在Android应用程序中使用AdMob奖励广告。
为了将其包含在引用的应用程序中,我需要在用户单击按钮后等待加载有奖赏的视频。
我在下面的代码中都在尝试,但是出现错误:
单击按钮时:
b_r_ans.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isSomBotaoLigado() && loaded[0])
soundPool.play(soundID, MyApplication.getVolumeBotao(), MyApplication.getVolumeBotao(), 1, 0, 1f);
Toast.makeText(MyApplication.getAppContext(),carregando_rv, Toast.LENGTH_LONG).show();
Thread t_rv = new Thread(new Runnable() {
public void run() {
while(!rv_loaded){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
t_rv.start();
try {
t_rv.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
mRewardedVideoAd.show();
}
});
覆盖监听器:
@Override
public void onRewardedVideoAdLoaded() {
Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show();
rv_loaded = true;
}
使用 mRewardedVideoAd.isLoaded()函数会触发相同的问题。
如何等待视频正常加载?
最佳答案
看来您是在从另一个线程到UI调用show
的,所以我尝试使用force its execution on the main thread像这样:
// Get a handler that can be used to post to the main thread
Handler mainHandler = new Handler(Looper.getMainLooper());
Runnable myRunnable = new Runnable() {
@Override
public void run() {
if (mRewardedVideoAd.isLoaded()) {
mRewardedVideoAd.show();
}
};
mainHandler.post(myRunnable);