当前位置: 首页 > 面试题库 >

如何避免Admob阻塞UI线程

田志尚
2023-03-14
问题内容

我发现我的某些活动在启动时被阻止。因此,我在一个新项目中编写了该代码:

public class LayoutTestActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        long now = System.currentTimeMillis();

        new AdView(this, AdSize.BANNER, "MY_ID");

        Log.e("Admob Test","The UI was blocked "+(System.currentTimeMillis()-now)+"ms");
    }
}

结果是第一次创建AdView对象会阻塞UI线程1到2秒钟。

有什么办法可以避免这种情况?

谢谢


问题答案:

您正在UI线程中创建AdView,这就是被阻止的原因。在AdView初始化期间,线程不会执行其他任何操作。

您可以尝试在另一个线程中加载AdView,也可以使用AsyncTask以用户界面安全的方式加载它。

检查此内容以获取有关Android中AsyncTask和线程的更多信息。

http://developer.android.com/reference/android/os/AsyncTask.html



 类似资料:
  • 问题内容: 考虑以下代码: 我了解在上面的代码中,如果拥有同步块的所有权,并且同时如果线程尝试获取同步块,则需要内核等待。我想避免这种情况,并在块之前旋转,直到调用等待并离开该块的所有权为止。那可能吗? 问题答案: JVM无需将进入锁定的同步块的步骤实现为硬块和上下文切换。它可以选择使用重量更轻的方法,例如旋转锁。实际上,Oracle JVM竭尽所能避免阻塞。因此,您可能会发现JVM已经为您完成了

  • 我安装了一个插件,允许我从代码中创建UML图。一切正常,直到我发现现在所有的键盘快捷键(如CTRL-X、CTRL-Z、CTRL-SPACE、CTRL-SHIFT-F等)除了CTRL-C和CTRL-V之外,现在需要单击右下角显示的小正方形。这是每一次都需要的。 这是出现的正方形的几个例子: 如果我点击消息或按回车键,我可以访问该功能。有人知道如何摆脱这个烦人的东西或者至少重置Eclipse相关的配置

  • 我在<code>java.text.RuleBasedCollator中遇到线程阻塞问题。getCollationKey()当我的服务器负载过重时。 下面是出现问题的类: 下面是来自线程转储的一个片段,显示了有问题的阻塞: " xxxhttp 227 " prio = 5 tid = 0x 355 NID = 0x 163 BLOCKED归hybrishttp 109 Id = 236-stats

  • 阻塞I/O的操作会导致App必须等待结果返回(阻塞结束)才能进行下一步操作。在UI线程上执行一个阻塞操作会将UI强行卡住,直接造成很糟糕的用户体验。 我们激活StrictMode后,我们开始收到了关于我们的App错误操作磁盘I/O的不良信息。 D/StrictMode StrictMode policy violation; ~duration=998 ms: android.os.Strict

  • 本文向大家介绍Jquery ajax 同步阻塞引起的UI线程阻塞问题,包括了Jquery ajax 同步阻塞引起的UI线程阻塞问题的使用技巧和注意事项,需要的朋友参考一下 最近做一个项目,遇到了一个问题同步ajax引起的ui线程阻塞问题,下面把我的问题解决过程分享给大家。 事情起因是这样的,因为页面上有多个相似的异步请求动作,本着提高代码可重用性的原则,我封装了一个名为getData的函数,它接收

  • 问题内容: 我的JS脚本中有这样的功能: 也许“ doSomethingHeavy”本身是可以的,但重复执行300次会导致浏览器窗口被卡住一段不可忽略的时间。在Chrome中,这并不是什么大问题,因为只有一个制表符有效。但对于Firefox来说,这是一场彻底的灾难。 有什么方法可以告诉浏览器/ JS“轻松一点”,而不是阻止对doSomethingHeavy的调用之间的所有操作? 问题答案: 您可以