0

最奇怪的事情正在发生。在我的 onClick(View ...) 中,我有代码块,主要是“if/else”块。序列是(在伪代码中,为您节省冗长的代码):

  1. 我有一个需要使用 imageButton.setImageResource(randomImage); 设置的图像 然后
  2. 我有一个与需要播放的图像相关联的 MediaPlayer,然后
  3. 我在这里放置一个 sleep(1800) 否则 MediaPlayer 会运行到下一个 MediaPlayer (这工作正常)
  4. 此图像与另一个图像进行比较。如果不一样,则播放另一个名为“boo”的 MediaPlayer,并且应该在上面的代码 1 中显示的图像被“标志”图像替换。else //如果它是正确的图像然后
  5. 切换到“另一个”图像,播放它对应的 MeidaPlayer,播放“干杯”MediaPlayer 并将图像更改为“tick”图像,然后执行一些其他逻辑操作。

但是正在发生的是代码 2. 正在播放,代码 3. 正在发生。代码 4. 只有“嘘”媒体播放器正在发生,我注意到图像按钮在闪烁。应该在代码 1 中设置的图像被延迟,并且仅在“嘘”媒体播放器之后发生。替换代码 1. 中的第一个图像设置的“标志”图像正在发生,但由于代码 1. 延迟,正在发生的是图像没有改变(虽然它是,它只是延迟然后它闪烁所以很快,它似乎没有改变)。所以代码 1. 延迟了。此外,如果它进入 else 并单击右侧图像,则代码 5 中的图像。确实切换到“另一个”,但相应的 MeidaPlayer 不播放,“干杯”MediaPlayer 不播放,“打勾'图像没有' t 显示,其他逻辑不发生。好像它忽略了代码。这里发生了什么事?这是多线程的情况吗?将代码的不同部分分组到各自的线程中并立即启动它们只会引发异常。任何帮助将不胜感激!

4

2 回答 2

0

只是为了解释亚当的想法。

把它放在你的 Activity 类中:

final Handler handler = new Handler(); 
Runnable _rnbl = new Runnable() { 
    public void run() {
        // Your code
    }   
};

像这样称呼它

handler.postDelayed(_rnbl , 5000);
于 2012-07-30T16:27:30.237 回答
0

如果您想延迟您的代码,请使用Handler.postDelayed(Runnable, long). 这不会阻塞 UI 线程,并且会在您想要的时候执行。

Whitout 你的代码,真的不清楚你想要实现什么,以及你是如何实现它的。

于 2012-07-30T14:55:32.333 回答