因此,我是XF的新手,我想知道Android上的AppState
/ Activity
生命周期。
此代码正下方的代码位于名为test.xaml.cs
的文件中。
声音的工作原理是您可以说startSound.Play()
或startSound.Stop()
之类的声音来启动或停止应用中的声音。我注意到有一个错误,当该应用程序的其余部分通过“后退”按钮重置时,它不会停止声音(即使它保留在内存中?)
public Test()
{
startSound = CrossSimpleAudioPlayer.CreateSimpleAudioPlayer();
startSound.Load(Path.Combine($"Audio", "startBeep.wav"));
stopSound = CrossSimpleAudioPlayer.CreateSimpleAudioPlayer();
stopSound.Load(Path.Combine($"Audio", "stopBeep.wav"));
winSound = CrossSimpleAudioPlayer.CreateSimpleAudioPlayer();
winSound.Load(Path.Combine($"Audio", "winBeep.wav"));
endSound = CrossSimpleAudioPlayer.CreateSimpleAudioPlayer();
endSound.Load(Path.Combine($"Audio", "endBeep.wav"));
addSound = CrossSimpleAudioPlayer.CreateSimpleAudioPlayer();
addSound.Load(Path.Combine($"Audio", "addBeep.wav"));
}
我想做的是在app.xaml.cs
文件中进入受保护的override void OnSleep()
并写入startSound.stop();
,以便在应用程序睡眠时停止声音。但是,我不知道如何在Test
中访问test.xaml.cs
的公共功能。
这是app.xaml.cs
protected override void OnSleep()
{
Debug.WriteLine("OnSleep");
// Handle when your app sleeps
}
我已经使用调试来确保应用程序状态更改,因此我知道OnSleep()
可以正常工作。
答案 0 :(得分:1)
您可以使用MessagingCenter完成此操作。
Xamarin.Forms MessagingCenter使视图模型和其他组件可以进行通信,而无需通过简单的Message合同来了解彼此。
只需在OnSleep
的{{1}}中发送一条消息,然后在App
上订阅该消息:
在您的OnSleep中:
Test
在测试中:
MessagingCenter.Send<App>(this, "OnSleep");
HIH