我正在使用cordova / ionic和cordova-plugin-media来交叉淡化两首音乐曲目。
我遇到了一个问题,即我正在将一个Media对象与另一个Media对象交叉淡入淡出。
它工作正常,但是当我在Android上完成的Media对象上调用.release()时,但在ios上,。release()会杀死所有音频。如果我不在ios中调用release,我最终会遇到“内存泄漏”。我说'内存泄漏',因为它不是真的 - 我知道那个对象仍在那里。
如果重置对象并将其置空,则无关紧要,根据xcode,内存占用量会逐渐变大。
我减少了loadTrack代码:
var loadTrack = function(playerName,track){
var pn = playerName;
var mediaOnEnd = function(){
console.log('mediaOnEnd RELEASING: '+pn);
$scope.player.media[pn].release();
};
var mediaError = function(error){
prepareNextTrack(pn);
};
var mediaStatus = function(status){
switch(status){
case 2:
console.log('playing:'+pn);
break;
case 4:
console.log('stop:'+pn);
break;
}
};
$scope.player.media[pn] = new $window.Media(
config.local_path+$scope.currentTrack.id+config.file_extention,
mediaOnEnd,
mediaError,
mediaStatus
);
$scope.player.media[pn].play();
};
当调用mediaOnEnd时,或者当我在交叉渐变功能(不包括)中调用它时,所有音频都会停止。
我能在任何地方正确地做到这一点吗?