私がやりたいことは、ToggleButton がオンのときにアセットからランダムなサウンドを再生するメソッドを実行することです。そして、ToggleButton が Off のときにそれをやめます。問題は、現在構築されているように、私のコードが 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;
}
}