从UI线程分离插页式负载

时间:2014-12-28 20:24:46

标签: android multithreading admob interstitial mopub

我创建了一个简单的Android游戏并决定投放插页式广告。我的代码(我使用的是MoPub广告SDK,实现类似于admob):

private void loadMoPubInterstitial () {

    moPubInterstitialView.load();
}

我从main活动的onCreate()方法调用它。插页式广告正在展示,但它会导致UI线程负载过重。控制台显示警告,大约350帧被丢弃,并且应用程序在主线程上执行了太多工作。游戏真的落后于设备。当我评论该行

moPubInterstitialView.load();

警告被移除,游戏在设备上顺利运行。所以我决定将插页式加载过程移到另一个线程。这是我的代码:

   private void loadMoPubInterstitial () {

    new Thread(new Runnable() {
        public void run() {
            moPubInterstitialView.load();
        }
    }).start();
}

但这一次,插页式广告没有显示出来。检查以确定插页式广告是否已准备就绪:

moPubInterstitialView.isReady()

总是返回false。

可能是什么原因?

1 个答案:

答案 0 :(得分:0)

我不确定,但我认为你在线程完成加载工作之前检查moPubInterstitialView,只需在线程完成所有任务后尝试检查moPubInterstitialView.isReady()我试过下面的样品,它适合我。

boolean flag= false;
                temptest ="before change" ;
              Thread thread= new Thread(new Runnable() {
                   @Override
                   public void run() {
                       temptest=" text changed";
                        flag= true;
                   }
               });

                thread.start();


                if(flag)
                {
                    System.out.println(temptest);

                }