2011-07-04 26 views
4

我正在使用AVPlayer播放在線電影。它工作正常。現在的問題是,當我在電影開始播放之前從視圖中彈出時,後臺進程將繼續運行。當電影被加載時,它開始在後臺播放。AVPlayer一直在後臺運行

我試圖在viewWillDisappear中釋放玩家。但它不工作。

- (void)viewWillDisappear:(BOOL)animated 
{ 
    if (self.player.currentItem.status != AVPlayerItemStatusReadyToPlay) 
    { 
     [self.player.currentItem removeObserver:self forKeyPath:kRateKey]; 
     [self.player.currentItem removeObserver:self forKeyPath:kStatusKey]; 
     [self.player.currentItem removeObserver:self forKeyPath:kTimedMetadataKey]; 
    } 
    [self.player pause]; 
    [self.player release]; 
    [self.playerLayerView release]; 

    [super viewWillDisappear:animated]; 
} 

任何人都可以請幫忙嗎? 在此先感謝

+0

沒有你留住玩家隨時隨地的對象,因爲釋放後,它仍然會在那裏,所以你需要檢查留住玩家對象的數量 – iMOBDEV

+0

謝謝對於這個建議。將檢查。 – Nir

回答

0
- (void)viewWillDisappear:(BOOL)animated 
     if (self.player.playing==YES) { 
      [self.player stop]; 
      self.player=nil; 
     } 
    } 
+1

只有在視頻開始播放時纔有效。當視頻尚未準備好播放並且線程在後臺工作時,我面臨這個問題。我想停止這個線程。 – Nir

+0

你爲什麼要用這種方法摧毀你的玩家?如果另一個視圖呈現或推到頂部,並且您回到這個視圖,則不再有玩家了。 –

0

這可能幫助..

if (self.player.currentItem.playbackLikelyToKeepUp == 1) { 

    NSLog(@"Ready To Play"); 
    [self.player play]; 


    }else{ 

    NSLog(@" Show HUD Buffering..."); 

    [self.player pause]; 

    }