[英]ListView item onClickListener and garbage collector
我有一个ListView和一个ArrayAdapter。 在方法getView中,我在每个列表元素上创建按钮。 这是我的onClick
方法的代码
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滚动到底部或切换视图,如何使声音播放到最后呢?
您想要创建一个单独的线程来保存MediaPlayer
对象。 当您单击按钮时,向该线程发送一条消息,告诉它您要播放的音频资源。
最简单的方法可能是使用Handler对象,该对象将管理您的线程并创建一个与之通信的消息队列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.