繁体   English   中英

如何在Locale更改期间在Android Oreo中进行后台API调用?

[英]How to make background API calls in Android Oreo during Locale change?

我有一个场景,我需要在设备语言发生变化时通知服务器。 我需要调用一个API(即使应用程序没有运行)并使用服务器更新当前语言。 我已经在BroadCastReceiver的帮助下实现了这一点

  <action android:name="android.intent.action.LOCALE_CHANGED" />

广播触发后,我即启动服务并调用API。 但是,由于Android Oreo及以上版本具有后台执行限制,因此我必须启动ForegroundService

此处,在后台API调用期间,通知面板中会显示通知。 因此,用户仍然可以转到应用程序设置并强制停止应用程序,然后API调用将被中断。 但我需要保证执行此API。 除了前台服务之外,有没有办法在后台执行它? 可以在WorkManager或Job Scheduler的帮助下完成吗? 处理此用例的最佳方法是什么? 希望我的问题很明确。 提前致谢!

用户总是可以杀死你的应用,所以这不应该是意料之外的。 但是如果你不喜欢前台服务,那么在数据库中排队这些信息(带时间戳),并在你的应用程序运行时发送到你的API。 如果您必须立即发送,请将其排队,然后立即发送。 如果用户在操作中途杀死了您的应用,那么您仍然可以在下次从队列中重新发送它。 WorkManager是一个不错的选择:

即使应用程序或设备重新启动,也可以保证任务执行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM