我想要做的是运行一个方法,该方法将在 ToggleButton 处于打开状态时从我的资产中播放随机声音。然后在 ToggleButton 关闭时停止这样做。问题是,按照目前的构造,我的代码锁定了 UI 线程。我以为我正确使用了 AsyncTask,但显然不是。
您能否建议解决此问题或更好的方法来完成我想要的?
public void onToggleClicked(View view) {
// Is the toggle on?
boolean on = ((ToggleButton) view).isChecked();
while (on) {
AssetManager assetMgr = this.getAssets();
try {
String[] filename = assetMgr.list("sounds");
Random r = new Random();
String fn = filename[r.nextInt(filename.length)];
if (MyService.mp.isPlaying()) {
}
else {
new PlayShuffleMode().execute(fn);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这是 AsyncTask 方法:
private class PlayShuffleMode extends AsyncTask<String, Void, Void> {
@Override
protected Void doInBackground(String... fn) {
mService.playfav(fn[0]);
return null;
}
}