我有一个包含 0 和 1 的数组,我每次都尝试为数组中的每个"1"播放 mp3 文件,当我有一个"0"时,我希望应用程序等待一秒钟。我尝试了这段代码,它可以工作,但是当我进入循环时该应用程序被阻止了。还有其他方法可以做到这一点吗?
while(j < c.size()){
if(c.get(j)==1) {
mediaPlayer.start();
SystemClock.sleep(1000);
}
else SystemClock.sleep(1000);
j++;
}
尝试使用 AsyncTask,您可以在后台播放音乐。同时,将一个布尔值连接到按钮以更改标志并调用该方法。
pd:sry my bad English xD
public void mAsyncTask() {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
while (--Here put a boolean--) {
mediaPlayer.start();
try {
Thread.sleep(--put here a pause in millisec--);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}
}.execute();
}
在睡眠期间,您正在阻塞主线程,例如,如@vilpe89所说,使用 AsyncTask 在另一个线程中执行此操作。 https://developer.android.com/reference/android/os/AsyncTask.html