Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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
Java 如何使函数在调用自身之前等待_Java_Android_Function_Recursion_Time - Fatal编程技术网

Java 如何使函数在调用自身之前等待

Java 如何使函数在调用自身之前等待,java,android,function,recursion,time,Java,Android,Function,Recursion,Time,Java,安卓工作室 我有一个功能,可以发牌,直到每个人都有牌。我想在发牌时播放一个声音,我想停止该功能,持续1或2秒,这样看起来就不会在0.1秒内发完所有的牌。 我已经试过: Thread.sleep(); 我不想冻结我的应用程序,我只想让递归函数在调用它自己之前等待。你可以播放声音,然后用Handler()在Handler中停止。postdeleed()。抽象示例如下所示: //code to play sound new Handler().postDelayed(new Runnabl

Java,安卓工作室

我有一个功能,可以发牌,直到每个人都有牌。我想在发牌时播放一个声音,我想停止该功能,持续1或2秒,这样看起来就不会在0.1秒内发完所有的牌。 我已经试过:

Thread.sleep();

我不想冻结我的应用程序,我只想让递归函数在调用它自己之前等待。

你可以播放声音,然后用Handler()在Handler中停止。postdeleed()。抽象示例如下所示:

//code to play sound
new Handler().postDelayed(new Runnable(){
     @Override
     public void run(){
          //stop the sound
     }
}, 1000); // 1000 is in millisec which means 1 seconds.
例如,此代码将在1秒后播放并暂停音乐:

final MediaPlayer player = new MediaPlayer();
AssetFileDescriptor afd = 
   this.getResources().openRawResourceFd(R.raw.hangout_ringtone);
player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), 
afd.getLength());
afd.close();
player.setAudioStreamType(AudioManager.STREAM_ALARM);
player.prepare();
player.start();
new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                mMediaPlayer.stop();
            }
        }, 1000);//millisec.

查看
处理程序。postDelayed
不要使用应用程序的主线程或UI线程&处理后台线程您可以休眠该线程,这样应用程序就不会冻结。除了向线程添加延迟之外,没有更好的解决方案吗?就像使用Asyn流程一样。谢谢,这就是我一直在寻找的答案!