如何在页面上停止播放AVPlayer离开Xamarin Forms



我有AVPlayer,当我移动到下一页时,播放器继续播放,如果我添加观察者,如果我不处理它们,它们就会崩溃,但我无法找到处理处置的方法,因为ContentView不会告诉您何时在后台。

请帮忙 ?

在 Xamarin Forms 中,ContentView 无法找出它托管页面何时消失,除非它从页面本身获得一些帮助。所以我以前是如何实现这一点的,如下所示:

步骤1(在内容视图中定义消失的方法

在 ContentView 中定义一个名为 OnDisappearing 的方法,在其中,当视图消失时,执行任何需要的操作 - 在您的情况下,听起来您需要删除观察者并处置您的播放器。所以它看起来像这样:

public void OnDisappearing()
{
_playerPositionChangedObserver?.Dispose();
_player?.Dispose();
}  

定义此方法本身不会做任何事情,您需要从某个地方实际调用它 - 这就是页面的用武之地......

步骤2(覆盖页面中的消失方法

页面将在出现或消失时被告知,您可以使用它转发到其他ContentView。在下面的示例中,MyPage 重写了 OnDisappearing 方法,然后调用我在步骤 1 中在 ContentView 上定义的方法。

public class MyPage : ContentPage
{
public MyPage()
{
InitializeComponent();
}
/// <summary>
/// Performs page clean-up.
/// </summary>
protected override void OnDisappearing()
{
base.OnDisappearing();
contentView.OnDisappearing();
}
}

最新更新