首页 > 解决方案 > 如果应用程序被取消,我如何编写一个可以工作的后台服务

问题描述

我正在编写一个具有 UI 的 Xamarin Forms App(C#),它从用户那里获取数据并将其数据传递给后台线程/服务以发送到服务器。数据首先保存到本地数据库以进行安全保存。(清理将在稍后)

即使应用程序被最小化或关闭(将其从屏幕上滑出),我也需要一项服务或能够保证数据交付的东西。我在寻找不存在的东西吗?

我尝试了一个 IntentService,它似乎做了我想做的事,但如果我杀死了 UI,它就会停止。我尝试了一个真正的服务,如果我终止 UI,它也会停止,但我可能没有正确设置它。

此外,服务似乎在 UI 线程上运行。那有什么好处?我无法让它作为 BackgroundWorker 运行,无论是在 worker 内部使用 StartService,所以我尝试正常运行该服务,并在 StartCommandResult OnStartCommand 中,将数据获取/保存方法作为任务或线程调用。只要应用程序保持活动状态,它就可以工作。我也查看了 AsyncTask 以及 AlarmManager。

我错过了什么???

标签: xamarin.formsxamarin.androidxamarin.ios

解决方案


查看 Shiny Framework 中的后台作业功能 - 它专为像您这样的用例而构建

https://github.com/shinyorg/shiny

完整的如何与创作者在这里视频

https://www.youtube.com/watch?v=aLtk-VlGicY


推荐阅读