【问题标题】:Android shows blank screen with System.currentTimeMillis()Android 使用 System.currentTimeMillis() 显示空白屏幕
【发布时间】:2013-10-30 14:47:52
【问题描述】:

我的 android 应用程序中有以下代码。每当这些代码行在我的应用程序中运行时,手机屏幕就会空白 10 秒。这个“问题”很可能是由“System.currentTimeMillis()”引起的


        for (i=0;i<10;i++)
        {
            time0 = System.currentTimeMillis();
            do
            {
            time1 = System.currentTimeMillis();
            }
            while ((time1 - time0) < 1000);
        } 

有什么办法可以避免黑屏?

谢谢

【问题讨论】:

    标签: java android user-interface


    【解决方案1】:

    您得到 10 秒的空白屏幕的原因是因为这部分代码阻塞了 UI 线程。与调用System.currentTimeMillis()无关。

    在每次 for 循环迭代中,您都在反复检查时间,直到 1 秒过去。由于您执行了 10 次 for 循环,因此您实际上将 UI 线程阻塞了 10 秒。

    编辑:如果您想暂停执行几秒钟,请查看 Java Timer Class

    【讨论】:

    • 好的,谢谢。我是 eclipse 和 java 的一个相对较新的用户。你能告诉我如何避免这个空白屏幕吗?基本上我只想等待几秒钟,然后再继续执行下一部分代码。我在 onActivityResult() 中执行它
    • 有什么理由需要等这么久?没有人喜欢在 10 秒内看着应用中没有任何事情发生。
    • dymmeh 有一个公平的观点.. 不知道为什么,但你可以看看 java 中的计时器。见编辑
    • 我正在尝试自动连接到 Wifi。由于连接到 wifi 需要一些时间,所以我必须等待几秒钟才能检查连接是否已成功建立或已建立连接失败
    • @user2904943 不要那样做。有更好的解决方案可以发现您是否已连接以及何时连接stackoverflow.com/questions/6362314/…
    【解决方案2】:

    这可能是因为您正在 UI 线程中运行那段代码。为了避免出现空白屏幕,请尝试在单独的线程中运行它。

    最简单的方法是使用 AsyncTask。见http://developer.android.com/reference/android/os/AsyncTask.html

    【讨论】:

      猜你喜欢
      • 2013-08-25
      • 1970-01-01
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多