我正在尝试在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);

10-05 21:14
查看更多