因此,我有一个按下按钮的应用程序:启动计时器,循环显示一个(++)数据,并隐藏开始按钮,而是显示停止按钮和下一个按钮。 我调查了消息传递中心,并认为它正在解决问题(这里是链接Xamarin.Forms how do I access a public function from another CS file?),但并不能完全解决问题。
如果应用程序正在运行计时器(又名“开始”按钮),然后通过按手机上的“主页”按钮来中断该过程,则该应用程序运行良好,并且该应用隐藏了“停止/下一步”按钮并显示了“开始”按钮并停止计时器。如果您根本没有启动该过程(也没有按下开始按钮),并且您按下了手机上的主页按钮,则该应用程序将引发异常错误,因为我正在使用消息传递中心进行的更改“不需要改变,因为它从未改变”。有没有更好的方法来处理这种情况?
我可以在Messenger中心的应用程序状态下使用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();
});
答案 0 :(得分:1)
仅能看到部分代码,您应该在执行该方法之前检查计时器是否已初始化。
如果不单击开始按钮,则需要检查@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertReplace(user: User)
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun insertIgnore(user: User)
是否已初始化,以便执行以下计时器操作。
是否不知道计时器是否已初始化。您可以尝试:
修改通知处理方法。如果计时器和按钮的状态未更改,则无需在通知中做任何事情。在这里,我使用timer
作为判断。
timer