繁体   English   中英

ListView项目onClickListener和垃圾回收器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM