2013-03-20 148 views
0

我正在尝试显示我的谷歌广告,并且正在使用oncreate方法。尝试显示Google广告时发出警告

这是我正在做的。

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.cities); 



     AdView adView = new AdView(this, AdSize.BANNER, "a150cb2e3184cd"); 
     LinearLayout addLay = (LinearLayout) findViewById(R.id.addlay); 

     AdRequest adRequest = new AdRequest(); 
     // adRequest.addTestDevice(AdRequest.TEST_EMULATOR); 
     addLay.addView(adView); 
     adRequest.setTesting(true); 
     adView.loadAd(adRequest); 

但是,当我运行我的应用程序时我收到以下警告和屏幕过渡很慢。

这里是警告

03-20 05:07:22.952: W/webview_proxy(8998): java.lang.Throwable: Warning: A WebView method was called on thread 'AsyncTask #4'. All WebView methods must be called on the UI thread. Future versions of WebView may not support use on other threads. 
03-20 05:07:22.952: W/webview_proxy(8998): at android.webkit.WebView.checkThread(WebView.java:1876) 
03-20 05:07:22.952: W/webview_proxy(8998): at android.webkit.WebView.loadDataWithBaseURL(WebView.java:859) 
03-20 05:07:22.952: W/webview_proxy(8998): at c.a(Unknown Source) 
03-20 05:07:22.952: W/webview_proxy(8998): at c.doInBackground(Unknown Source) 
03-20 05:07:22.952: W/webview_proxy(8998): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
03-20 05:07:22.952: W/webview_proxy(8998): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
03-20 05:07:22.952: W/webview_proxy(8998): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
03-20 05:07:22.952: W/webview_proxy(8998): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
03-20 05:07:22.952: W/webview_proxy(8998): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
03-20 05:07:22.952: W/webview_proxy(8998): at java.lang.Thread.run(Thread.java:856) 

这里是我的AsyncTask类

public class CityData extends AsyncTask<Integer, Void, String> { 

     @Override 
     protected void onPostExecute(String result) { 
      // TODO Auto-generated method stub 
      super.onPostExecute(result); 
      try { 
       if (!lstresponse.isEmpty()) { 
        lstresult.addAll(lstresponse); 
        lstcities.setAdapter(CustAdapter); 
       } 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     protected String doInBackground(Integer... params) { 
      // TODO Auto-generated method stub 

      SendRequesttoServer(); 
      return "1"; 
     } 

     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
      super.onPreExecute(); 

     } 

    } 

什么错误,我现在做的?? ..

谢谢:)

+0

你的错误表明存在'AsyncTask'了一个问题,就是代码? – GrIsHu 2013-03-20 05:28:58

+0

@Grishu我没有在AsyncTask中显示谷歌广告。在AsyncTask中,我正在执行一种消费方法,但仅显示Google搜索的方法 – Beginner 2013-03-20 05:32:58

+0

删除异步任务并尝试GoogleAds工作与否。? – 2013-03-20 05:39:15

回答

0

由于AdView必须通过互联网进行通信,广告需要花费时间ow起来。

'block'或'lag'可能是Ad SDK's线索试图让您的广告展示给您。我真的不认为AdMob会在尝试获取广告时屏蔽UI线索,但是当您看到屏幕上显示的所有UI小部件项目(按钮,文本框,图片等)之间存在可见的延迟您的活动和广告何时出现。

尝试加载广告的主题如下:

public class MainActivity extends Activity { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      long now = System.currentTimeMillis(); 
     new Thread(new Runnable() { 
     public void run() { 
     new AdView(this, AdSize.BANNER, "MY_ID");    
     } 
    }).start(); 
}