簡體   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