У меня проблемы с моим видеоплеером, который использует API AV Foundation и воспроизводит клип через прогрессивную загрузку по HTTP. Даже когда AVPlayer выпущен, я все еще загружаю видеоклип (наблюдается с помощью анализатора HTTP-трафика).
Мой плеер инициализируется так:
m_player = new AVPlayer();
m_playerLayer = new AVPlayerLayer();
m_playerLayer.Player = m_player;
Затем, когда у меня есть URL-адрес видео:
m_url = new NSUrl (...);
m_asset = new AVAsset(m_url);
m_asset.AddObserver(this, new NSString ("playable"), NSKeyValueObservingOptions.Initial | NSKeyValueObservingOptions.New, AVPlayerAssetObservationContext);
Когда меня уведомляют, что актив доступен для воспроизведения, я создаю AVPlayerItem:
m_playerItem = new AVPlayerItem(m_asset);
if (m_player.CurrentItem != m_playerItem)
{
m_player.ReplaceCurrentItemWithPlayerItem (m_playerItem);
}
У меня видео воспроизводится без проблем. Затем, когда я нажимаю кнопку «Назад», у меня есть механизм, который вызывает метод Destroy(). Здесь я пробовал много вещей, чтобы убедиться, что мой плеер хорошо выпущен:
if(m_player != null)
{
m_player.Pause();
m_player.Dispose();
m_player = null;
}
if(m_playerLayer != null)
{
m_playerLayer.Dispose();
m_playerLayer = null;
}
if(m_playerItem != null)
{
m_playerItem.Dispose();
m_playerItem = null;
}
if(m_asset != null)
{
m_asset.CancelLoading();
m_asset.RemoveObserver(this, new NSString("playable"));
m_asset.Dispose();
m_asset = null;
}
if(m_url != null)
{
m_url.Dispose();
m_url = null;
}
Я протестировал свое приложение с помощью отладчика и точно попал в этот код. Мои объекты, кажется, хорошо выпущены, но наверняка приложение все еще загружает URL-адрес видео. Я что-то не так делаю в коде инициализации/релиза?
Заранее благодарим за помощь!