c# - 如何停止计时器/更改系统 UI OnSleep Xamarin Android
问题描述
所以我有一个按下按钮的应用程序:启动一个计时器,循环通过一个(++)数据并隐藏开始按钮,而是显示一个停止和下一步按钮。我查看了消息中心,我认为它正在解决问题(这里是链接Xamarin.Forms 如何从另一个 CS 文件访问公共函数?)但它并没有完全解决问题。
如果应用程序的计时器正在运行(也就是你点击了开始按钮),然后通过点击手机上的主页按钮来中断进程,则应用程序运行正常,应用程序隐藏停止/下一步按钮并显示开始按钮并停止计时器。如果您根本没有开始该过程(也就是您没有点击开始按钮)并且您点击了手机上的主页按钮,则应用程序会引发异常错误,因为我正在使用消息中心进行更改“不需要改变,因为它从未改变”。有没有更好的方法来处理这种情况?
我可以在消息中心的应用状态下使用 if/else 语句吗?我被困住了。
应用程序.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();
});
解决方案
推荐阅读
- python - 如何从输入表达式求解方程?
- python - Pandas:组变量长度不同时的 groupby().apply() 自定义函数?
- linux-device-driver - 如何将设备驱动程序集成到 ros
- c - C : string concatenation of multiple string 截断连接后的字符串部分
- docker - 詹金斯无法读取 json 文件
- java - 通过邮递员调用时模拟第三方 api
- python - 访问嵌套 proto 字段内的数据
- javascript - 在比较 Python 和 JavaScript 数组中的列表时,幕后发生了什么?
- django - 在 django 的多对多关系中添加额外的字段
- android - Android Room 错误:使用@Relation 注解的字段必须是 List 或 Set