我的代码行没有在延迟执行 - android

时间:2012-07-30 14:33:50

标签: android multithreading imagebutton android-image

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

  1. 我有一个需要使用imageButton.setImageResource(randomImage)进行设置的图像;然后
  2. 我有一个MediaPlayer与此图片相关联,需要播放,然后
  3. 我在这里睡觉(1800),否则MediaPlayer会跑进下一个MediaPlayer(这很好)
  4. 此图像与另一张图像进行比较。如果它不相同,则播放另一个名为“boo”的MediaPlayer,并且应该在上面的代码1中显示的图像被“flag”图像替换。否则//如果是正确的图像那么
  5. 切换到“另一个”图像,播放相应的MeidaPlayer,播放'欢呼'MediaPlayer并将图像更改为'tick'图像,然后执行其他逻辑操作。
  6. 但正在发生的是代码2.正在播放,代码3正在发生。代码4.只有'boo'媒体播放器正在发生,我注意到图像按钮闪烁。应该在代码1中设置的图像被延迟并且仅在'boo'媒体播放器之后发生。替换代码1中的第一个图像设置的“标志”图像正在发生,但由于代码1处于延迟状态,所发生的是图像没有变化(虽然它是,它只是在延迟然后它闪烁所以很快它似乎没有改变)。所以代码1.是延迟的。 此外,如果它进入其他并且点击了右图像,那么代码5中的图像。会切换到'另一个',但相应的MeidaPlayer不会播放,'欢呼'MediaPlayer不会播放,'' tick'图像不显示,其他逻辑不会发生。它似乎忽略了代码。 这里发生了什么事?这是多线程的情况吗?在自己的线程中对代码的不同部分进行分组并立即启动它们只会抛出异常。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

将它放在Activity类中:

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

并像这样称呼它

handler.postDelayed(_rnbl , 5000);