Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Runnable不能正常工作_Android_Handler_Runnable - Fatal编程技术网

Android Runnable不能正常工作

Android Runnable不能正常工作,android,handler,runnable,Android,Handler,Runnable,我做了一个有九个按钮的游戏,这样玩家就可以玩手机了。这些按钮中的每一个都会调用上面的延迟方法,以在玩家玩游戏和手机有机会玩游戏之间创建延迟,但当我测试游戏时,有时延迟很好,但有时我注意到延迟非常短,好像没有调用延迟方法一样。我想知道为什么会这样。谢谢。由于在延迟1500ms后,您所有的按钮都在调用相同的方法startPlay(),因此我认为您无法区分单个按钮造成的延迟 假设您有两个按钮,按钮1、按钮2和按钮3。单击按钮1时,会发生1500ms的延迟,然后立即(1秒后)按下按钮2。因此,创建了一个

我做了一个有九个按钮的游戏,这样玩家就可以玩手机了。这些按钮中的每一个都会调用上面的延迟方法,以在玩家玩游戏和手机有机会玩游戏之间创建延迟,但当我测试游戏时,有时延迟很好,但有时我注意到延迟非常短,好像没有调用延迟方法一样。我想知道为什么会这样。谢谢。

由于在延迟
1500
ms后,您所有的按钮都在调用相同的方法
startPlay()
,因此我认为您无法区分单个按钮造成的延迟


假设您有两个按钮,按钮1、按钮2和按钮3。单击按钮1时,会发生1500ms的延迟,然后立即(1秒后)按下按钮2。因此,创建了一个新的处理程序,该处理程序将再次延迟1500毫秒。但是现在按钮1的延迟已经结束,
startPlay()
将执行。现在这个
startPlay()
属于按钮1而不是按钮2。按钮2的
startPlay()
将在500毫秒(1500毫秒-1秒)后调用。

问题是,如果我按下say按钮1,将调用delay方法,这将导致在我按下按钮1和手机有机会玩的时间之间出现延迟。一旦我按下按钮1,所有按钮都将处于非活动状态,直到手机播放完毕,即我只有在电脑播放完毕后才有机会再次播放。您能记录延迟前后的时间吗?当用户单击按钮,然后再次单击
run()
方法时,记录System.currenttimemillis()。两个日志之间的差值应为1500ms。你也可以记录差异,看看它是否有差异。我刚刚做了,我得到的差异是1501,这很完美。这就是它应该是对的吗?请注意,1500以毫秒为单位。所以本质上,您正在等待1.5s.if(j==0){buttonC3.setClickable(false);//comp播放的机会在comp播放buttonC2.setClickable(false);buttonC1.setClickable(false);buttonB1.setClickable(false);}}
      public void delay() { //give delay before comp can  play
      Handler handler = new Handler();
       handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            startPlay();
        }
       }, 1500);
   }