如何停止 timer/change 系统 UI OnSleep Xamarin Android
How to stop a timer/change system UI OnSleep Xamarin Android
所以我有一个应用程序,按下按钮:启动计时器,循环浏览一条 (++) 数据并隐藏开始按钮,而是显示停止和下一步按钮。
我查看了消息中心,我认为它可以解决问题(这里是 link ),但它并没有完全解决问题。
如果应用程序有计时器 运行(也就是您按下开始按钮),然后通过按下 phone 上的主页按钮中断进程,应用程序运行正常并且应用程序隐藏stop/next 按钮并显示开始按钮和停止计时器。如果你根本没有开始这个过程(也就是你没有点击开始按钮)并且你点击了 phone 上的主页按钮,应用程序会抛出一个异常错误,因为我正在用消息中心 "doesn't need changing because it never changed"。有没有更好的方法来处理这种情况?
我可以在消息中心的应用程序状态下使用 if/else 语句吗??我卡住了。
App.xaml.cs
protected override void OnSleep()
{
// Handle when your app sleeps
Debug.WriteLine("~~~~~~~~~~~~~~OnSleep~~~~~~~~~~~~~");
MessagingCenter.Send<App>(this, "OnSleep");
}
MainPage.xaml.cs
MessagingCenter.Subscribe<App>(this, "OnSleep", (sender) => {
//shows start button instead of stop button
StartGrid.IsVisible = true;
//hides stop button
StopNextGrid.IsVisible = false;
//stops timer
timer.Stop();
timer = null;
//stops sound
startSound.Stop();
stopSound.Play();
});
只能看到部分代码,您应该在执行该方法之前检查您的定时器是否已初始化。
当没有点击开始按钮时,需要检查timer
是否初始化,才能进行下面的定时器操作
如果不想知道定时器是否初始化。你可以试试这个:
修改你的通知处理method.If你的计时器和按钮的状态没有改变,你不需要在notification.Here中做任何事情我使用timer
作为一个判断。
MessagingCenter.Subscribe<App>(this, "OnSleep", (sender) => {
//shows start button instead of stop button
if (null != timer)
{
StartGrid.IsVisible = true;
//hides stop button
StopNextGrid.IsVisible = false;
//stops timer
timer.Stop();
timer = null;
//stops sound
startSound.Stop();
stopSound.Play();
}
});
所以我有一个应用程序,按下按钮:启动计时器,循环浏览一条 (++) 数据并隐藏开始按钮,而是显示停止和下一步按钮。
我查看了消息中心,我认为它可以解决问题(这里是 link
如果应用程序有计时器 运行(也就是您按下开始按钮),然后通过按下 phone 上的主页按钮中断进程,应用程序运行正常并且应用程序隐藏stop/next 按钮并显示开始按钮和停止计时器。如果你根本没有开始这个过程(也就是你没有点击开始按钮)并且你点击了 phone 上的主页按钮,应用程序会抛出一个异常错误,因为我正在用消息中心 "doesn't need changing because it never changed"。有没有更好的方法来处理这种情况?
我可以在消息中心的应用程序状态下使用 if/else 语句吗??我卡住了。
App.xaml.cs
protected override void OnSleep()
{
// Handle when your app sleeps
Debug.WriteLine("~~~~~~~~~~~~~~OnSleep~~~~~~~~~~~~~");
MessagingCenter.Send<App>(this, "OnSleep");
}
MainPage.xaml.cs
MessagingCenter.Subscribe<App>(this, "OnSleep", (sender) => {
//shows start button instead of stop button
StartGrid.IsVisible = true;
//hides stop button
StopNextGrid.IsVisible = false;
//stops timer
timer.Stop();
timer = null;
//stops sound
startSound.Stop();
stopSound.Play();
});
只能看到部分代码,您应该在执行该方法之前检查您的定时器是否已初始化。
当没有点击开始按钮时,需要检查timer
是否初始化,才能进行下面的定时器操作
如果不想知道定时器是否初始化。你可以试试这个:
修改你的通知处理method.If你的计时器和按钮的状态没有改变,你不需要在notification.Here中做任何事情我使用timer
作为一个判断。
MessagingCenter.Subscribe<App>(this, "OnSleep", (sender) => {
//shows start button instead of stop button
if (null != timer)
{
StartGrid.IsVisible = true;
//hides stop button
StopNextGrid.IsVisible = false;
//stops timer
timer.Stop();
timer = null;
//stops sound
startSound.Stop();
stopSound.Play();
}
});