【问题标题】:Android event timing (Toasts and Intents)Android 事件计时(Toast 和 Intents)
【发布时间】:2011-09-04 11:03:12
【问题描述】:

我正在尝试显式启动新 Activity 的意图,但我希望当前 Activity 中的一些代码首先完成执行。我已经做了一些研究,并且有一些想法来实现这一点,但我在想“必须有一种更简单的方法来做到这一点”。这是相关的代码块:

        cpuToast(dmg);
        if (player_.getStatus() == false)
        {
            playerWon_ = false;
            Intent intent = new Intent(Main.this, Death.class);
            startActivity(intent);
        }

dmg 是一个整数。 cpuToast 只是简单地创建一个字符串来显示损坏,然后调用 show()。 getStatus() 返回玩家是否被杀死。如果玩家被杀,我会启动一个新意图,播放玩家死亡的动画。不幸的是,“死亡”活动在 Toast 变得可见之前就启动了,然后它在我不想要的死亡活动期间变得可见。

有没有人知道一种简单的方法来确保 Toast 在启动 Death Activity 之前完全执行?从我的发现看来,我必须创建一个“Timer”对象,而我真正想要的只是一个简单的 while 循环,如“while(Toast.isVisable) {}”,以将执行捆绑几个秒。

【问题讨论】:

    标签: android android-activity timing toast


    【解决方案1】:

    可以在http://developer.android.com/resources/articles/timed-ui-updates.html 找到一些用于更新 UI 以响应定时事件的示例代码。

    【讨论】:

      【解决方案2】:

      在您开始祝酒时,您还可以在当前活动中发布延迟消息;该延迟消息的 runnable 可以启动新的 Intent。

      【讨论】:

      • 啊,谢谢,这听起来更像是我正在寻找的解决方案。你能发布一些示例代码吗?
      • 我没有精简的例子,但在developer.android.com/reference/android/os/Handler.html 你可以找到 postDelayed() 方法。给它一个runnable和延迟时间;你的runnable将在那个时候执行。如果你需要从你的 UI 线程以外的东西发布 runnable,你的 UI 线程可以创建一个新的 Handler() 并将其传递给服务/等,并且非 UI 线程代码可以使用 handler.postDelayed()。
      【解决方案3】:

      一定要祝酒吗?

      如果您愿意使用自定义对话框(删除标题、按钮等),这可能是您最好的选择。使用处理程序在给定时间后关闭对话框并启动新活动。

      【讨论】:

      • 它不一定是 Toast,但我想我需要在新的 Activity 之前暂停一下。还将进行 Tween,并且还需要在此 Activity 启动之前完全执行。你知道除“Thread.Sleep()”之外的暂停方法吗?我尝试使用该方法,但它也暂停了我的动画的执行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-11
      相关资源
      最近更新 更多