我将现有的(快速)iOS物理治疗应用程序“ On My Nerves”重写为Xamarin.Forms。这是一个计时器应用程序,可帮助神经受损的人(如我!)进行脱敏锻炼。您拥有这些“面料”(例如羽毛),其中每个面料都有“ x”秒倒数。当结构的计时器到达0时,将出现一个消息框,显示“时间到”。用户单击确定,下一个结构开始其倒计时。冲洗并重复列表中的所有布料。这是显示工作流程的视频。相信我在视频中的UX。
这是我的示例应用程序代码,演示了此行为。
该DoSomethingForNow
方法(请原谅我的命名策略)是NotificationTime的回调(请参见第65行-没有足够的SO rep点用于直接链接),该回调是在计时器启动时创建的,以防应用获取背景。
在设备的“释放”模式下不起作用的特定呼叫在第115行
Device.BeginInvokeOnMainThread(
async () => await ShowAlertAndWaitForUser(currentFabricCount));
该async () => await ShowAlertAndWaitForUser(currentFabricCount))
预期在调试和发布配置上的iOS模拟器,并在设备的调试配置的工作。
但是,指示时间已到的消息框不会出现在物理设备上的Release config中。我无法弄清楚为什么Device.BeginInvokeOnMainThread()
在设备的Release config中不起作用。到底是怎么回事?
重用笔记 Device.StartTimer()
之所以我 早些时候改用James的FrenchPressTimer解决方案(请参阅jamesmontemagno / FrenchPressTimer),是因为我需要一种取消/停止/无论用户是否需要暂停或停止应用程序倒计时的方法。Device.StartTimer()
Device.StartTimer()
该 代码对我在模拟器和设备上的所有配置都非常有效,并且值得庆幸的是有人向我展示了如何取消Device.StartTimer(谢谢!)。如果要查看此工作解决方案,请在GitHub上查看saraford / Device-StartTimer-Working-Xamarin。Device.StartTimer()
我的具体问题是,为什么Device.BeginInvokeOnMainThread()
从物理设备上的Release config中的通知回调调用时不显示消息框。
我也尝试了不同的链接器组合。没有效果。