我目前正在开发一个Xamarin.Forms应用程序,每15秒查询一次API以获取更新。我已经使用MessagingCenter
来执行这个漫长的runnimg任务,因为即使应用程序背景也会继续运行。我目前只为Android项目添加了此代码,因为它使用了Service
我正在使用它并稍微调整它以满足我的要求:https://github.com/RobGibbens/XamarinFormsBackgrounding
当任务收到它的有效负载时,它会将信息呈现为构成页面主要内容的StackLayout
的子项。 (如果有所不同,该页面位于标签持有者中)
虽然应用程序位于前台,但一切都按预期工作,一旦它背景,它仍然无问题,我可以从控制台看到应用程序仍在进行正确的API调用并接收正确的数据,但是一旦应用程序返回到前台,StackLayout
和页面上的所有内容都会重新加载,就像第一次打开应用程序一样。
然后,我仍尝试使用它StackLayout
更新x:Name
,并且不会收到错误,但屏幕上没有任何更改。
我甚至尝试过更改BackgroundColor
而没有任何更改,但如果我Console.WriteLine(layout.BackgroundColor.ToString());
它会提供新颜色,而不是屏幕上的颜色。
我担心的可能是它正在创建一个新的布局,当它回到前台时,但是将旧布局保留在内存中,这样任何代码都会对旧版本进行更改,而不是屏幕上的新版本
如果有人能以某种方式解释这种行为,我可以理解并建议修复,我们将非常感激。