Xamarin.Forms Timer不';即使在';它不显示了吗?

Xamarin.Forms Timer不';即使在';它不显示了吗?,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我正在使用XF PCL制作一个应用程序 我开始怀疑XF的计时器对于UI例程来说不够好。 例如,在iOS原生应用程序中,如果视图未显示某些原因(推送新页面或其他原因),调度程序将自动停止。因为它是用于用户界面的 但Xamarin的不是这样的。 它还在做他的工作 我希望至少在“Device.beginInvokeMainThread(()=>)中,当它消失时将跳过它 我说得对吗? 我应该为这一点增加逻辑吗? (如停止和重新启动计时器?) (或声明要在其中跳过的变量?) 谢谢。在Andriod中,通常

我正在使用XF PCL制作一个应用程序

我开始怀疑XF的计时器对于UI例程来说不够好。 例如,在iOS原生应用程序中,如果视图未显示某些原因(推送新页面或其他原因),调度程序将自动停止。因为它是用于用户界面的

但Xamarin的不是这样的。 它还在做他的工作

我希望至少在“Device.beginInvokeMainThread(()=>)中,当它消失时将跳过它

我说得对吗? 我应该为这一点增加逻辑吗? (如停止和重新启动计时器?) (或声明要在其中跳过的变量?)


谢谢。

在Andriod中,通常当您在Page1中,然后导航到Page2时,虽然Page1是隐藏的,但它不会被终止,因此工作线程仍会工作(在这种情况下,它是计时器) 我的建议是覆盖
OnDisappearing
方法,该方法位于Page1的代码隐藏中,并放置会使计时器停止或被忽略的代码。
如果是我的话,我也会放置一个布尔标志并调用
\u ispageShowed
,这样当你覆盖
OnDisappearing
OnAppearing
时,你只需将
\u ispageShowed
的值相应地设置为false或true。然后在计时器的回调中,你检查标志是否为true或false,并相应地采取行动。

我建议您取消订阅计时器,或通过覆盖正在侦听的页面的代码隐藏中的OnDisappear来停止计时器。我从不使用计时器,您能告诉我您在谈论哪个类吗?@BraveHeart我还考虑在OnDisappear中添加一些跳过代码,并在出现时继续。您是否询问我使用的计时器?设备。StartTimer。比方说,我想制作stars图像并在我的页面中每秒钟显示一次,我使用计时器。但即使在导航时推送新页面并将其隐藏,计时器也会持续工作。当页面隐藏时,它不会被杀死:)我使用Prism进行导航,它有一种方法来导航和破坏页面。但是对于xamarin导航,我认为杀死页面的方法是调用PopAsync。我从来没有用过计时器,我通常用等待任务。延迟。但当然,如果我是你,我会在页面消失时放置一个标志,这样当回调启动时,你可以检查标志的状态并跳过它。是的,确切地说,我没有使用其他标志,但对我来说,这是比较熟悉的,因为我很快就与WPF合作过