2013-03-16 63 views
2

我得到一個默認的鈴聲在我的活動:如何.release()由RingtoneManager實例化的MediaPlayer?

remindRingtoneView = (TextView) findViewById(R.id.remind_ringtone); 

remindRingtoneView.setText(RingtoneManager.getRingtone(
      NewReminder.this, ringtone_uri).getTitle(
      NewReminder.this)); 

此行之後,我已經有了一個調試線與logcat中標籤=「鈴聲」和消息=

'Successfully created a local player'.

當我完成活動和系統垃圾回收器做它的好工作,我在logcat中=

'MediaPlayer finalized without being released'. 

得到一個警告消息,我怎麼可以釋放它?

答案是:

Ringtone remind_ringtone = RingtoneManager.getRingtone(
      NewReminder.this, ringtone_uri);   
remindRingtoneView.setText(remind_ringtone.getTitle(NewReminder.this)); 
remind_ringtone.stop(); 

回答

6

在你的程序中,RingtoneManager.getRingtone將對象返回Ringtone類。如果我們將此對象視爲mRingTone,則調用mRingTone.stop()將釋放MediaPlayer對象。

+0

謝謝!我已經用你的解決方案更新了我的文章。 – 2013-03-17 04:04:54

+0

@SergeiGrabak謝謝......我很高興爲你工作的解決方案 – Ganesh 2013-03-17 04:20:26

+1

@Ganesh我也被這個logcat信息所困擾,並最終達到了與此處描述的相同的結論(一旦我終於想出'Ringtone'造成它)。如果這些東西被記錄在案會很好! – dlf 2014-05-20 01:37:37