Xamarin Android - 周期性任务执行
Xamarin Android - Periodic task execution
我正在用 Xamarin.Android 编写一个应用程序来从一些家庭自动化传感器(Sonoff、Shelly)检索数据并设置一些开关。我需要它甚至在后台进行 api 调用,大约每 5 或 10 分钟一次。我知道时间很短,我打算稍后用 Arduino 做这个,但现在我需要这个。
我进行了一些研究,阅读了有关服务及其局限性的信息,但我不知道该怎么做。有人能帮我吗?谢谢
您可以:
- 创建一个保持 运行ning 的前台服务,然后在那里执行一个计时器
- 使用 Android X 中的 WorkManager,根据设备性能和软件版本,将优先使用以下内容:
- JobScheduler
- Firebase JobDispatcher
- 报警管理器
JobScheduler 允许您(有点像 Linux 上的 cron)将计划任务设置为 运行。但是,这样做的频率是有限的。此频率取决于 Android 版本和作业标准以及设备是否 运行 资源不足。
有了前台服务,只要服务还活着,你就可以或多或少地做你想做的事。您可能需要在您的应用程序的电池设置中禁用电池优化,否则它应该可以正常工作。
除了这些功能之外,除非您使用的是已获得 root 权限的设备或者您是该设备的设备管理员,否则您不能做更多的事情。如果是 root/device 管理员,您可以将您的应用标记为 Persistent
以禁止它被 Android.
杀死
我正在用 Xamarin.Android 编写一个应用程序来从一些家庭自动化传感器(Sonoff、Shelly)检索数据并设置一些开关。我需要它甚至在后台进行 api 调用,大约每 5 或 10 分钟一次。我知道时间很短,我打算稍后用 Arduino 做这个,但现在我需要这个。 我进行了一些研究,阅读了有关服务及其局限性的信息,但我不知道该怎么做。有人能帮我吗?谢谢
您可以:
- 创建一个保持 运行ning 的前台服务,然后在那里执行一个计时器
- 使用 Android X 中的 WorkManager,根据设备性能和软件版本,将优先使用以下内容:
- JobScheduler
- Firebase JobDispatcher
- 报警管理器
JobScheduler 允许您(有点像 Linux 上的 cron)将计划任务设置为 运行。但是,这样做的频率是有限的。此频率取决于 Android 版本和作业标准以及设备是否 运行 资源不足。
有了前台服务,只要服务还活着,你就可以或多或少地做你想做的事。您可能需要在您的应用程序的电池设置中禁用电池优化,否则它应该可以正常工作。
除了这些功能之外,除非您使用的是已获得 root 权限的设备或者您是该设备的设备管理员,否则您不能做更多的事情。如果是 root/device 管理员,您可以将您的应用标记为 Persistent
以禁止它被 Android.