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



最奇怪的事情正在发生。在我的onClick(查看…)中,我有代码块,大部分是"if/else"块。序列是(在伪代码中,为您节省冗长的代码):

  1. 我有一个图像需要使用imageButton设置。setImageResource(randomImage);那么
  2. 我有一个与此图像相关联的MediaPlayer,需要播放,然后
  3. 我在这里放置睡眠(1800),否则MediaPlayer会进入下一个MediaPlayer(这很好)
  4. 将此图像与另一个图像进行比较。如果不相同,则播放另一个名为"boo"的MediaPlayer,并且该图像本应显示在代码1中。上面的,被"flag"图像取代。else//如果是正确的图像,那么
  5. 切换到"另一个"图像,播放相应的MeidaPlayer,播放"欢呼"MediaPlayer并将图像更改为"滴答"图像,然后做一些其他逻辑操作

但现在发生的是代码2。正在播放,代码3。正在发生。代码4。只有"boo"媒体播放器正在播放,我注意到图像按钮在闪烁。本应设置在代码1中的图像。被延迟,并且仅在"boo"媒体播放器之后发生。替换代码1中第一个图像设置的"标志"图像。正在发生,但因为代码1。是在延迟中,发生的是图像没有改变(尽管是,但它只是在延迟中闪烁,然后它闪烁得如此之快,以至于看起来没有改变)。所以代码1。正在延迟。此外,如果它进入else并单击右侧图像,则代码5中的图像。确实切换到"另一个",但相应的MeidaPlayer没有播放,"欢呼"MediaPlayer没有播放、"滴答"图像没有显示,其他逻辑也没有发生。它好像在忽略代码。这里发生了什么?这是多线程的情况吗?将代码的不同部分分组到它们自己的线程中并立即启动它们只会引发异常。任何帮助都将不胜感激!

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

不管你的代码是什么,都不清楚你想要实现什么,以及你是如何实现的

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

把这个放在你的活动课上:

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

并称之为

handler.postDelayed(_rnbl , 5000);

最新更新