0
私はListViewとArrayAdapterを持っています。メソッドgetViewでは、各リスト要素にボタンを作成します。ここ は、私はボタンをクリックして、リストの一番下までスクロールするのであれば、音が途切れ取得方法onClick
ListViewアイテムonClickListenerとガベージコレクタ
public void onClick(View view) {
mediaPlayer = MediaPlayer.create(context, audioResourceId);
mediaPlayer.start();
button.setBackgroundResource(R.drawable.ic_mic_pressed);
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.release();
button.setBackgroundResource(R.drawable.ic_mic);
}
});
}
ための私のコードです。このリストアイテムは画面外にあり、ガベージコレクションされているため中断されていると思います。
ListViewを一番下までスクロールしたり、ビューを切り替えても、このサウンドを最後まで再生する方法はありますか?
私は自分のサウンドを与えることができる静的な方法のようなものを作ると思っていました。これは動作しませんか? – Funtime
はい、それはすぐに問題を解決します。しかし、一般的なルールとして、UIスレッドでは「重い持ち上げ」をしないでください。たとえ動作しても、この動作はしばしばパフォーマンスが低下する原因となります。 MediaPlayerの内部を見ることなく、最悪の場合を想定するのが最善です。 (実際にテストしたい場合は、アプリケーションのStrict Modeをオンにすることができます。UIスレッドのブロックI/Oが警告されます) –
ハンドラが必要ですか?私はちょうどonClick(サウンドを再生することができます)MyThreadインスタンスを作成し、それを開始できますか? – Funtime