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