【问题标题】:How to restart foreground service after app updating in Android Oreo?如何在 Android Oreo 中更新应用程序后重新启动前台服务?
【发布时间】:2023-09-04 17:23:01
【问题描述】:

应用程序从 Google Play 自动更新后,我们需要重新启动应用程序的前台服务。对于 SDK

【问题讨论】:

  • 据我所知,您仍然可以从活动手动注册广播接收器,而不是通过不允许的清单注册接收器。
  • 此选项不适合我们,因为在应用更新期间接收方未注册。

标签: android restart android-8.0-oreo android-implicit-intent


【解决方案1】:

首先,并非所有隐式广播都被禁止。有a whitelist

其次,ACTION_MY_PACKAGE_CHANGED 是显式广播,仅发送到您的应用。引用the documentation:

面向 Android 8.0 或更高版本的应用无法再在其清单中为隐式广播注册广播接收器。隐式广播是不专门针对该应用程序的广播。例如,ACTION_PACKAGE_REPLACED 是一个隐式广播,因为它被发送给所有注册的监听器,让他们知道设备上的某些包被替换了。但是,ACTION_MY_PACKAGE_REPLACED 不是隐式广播,因为它只发送到包被替换的应用程序,而不管有多少其他应用程序为该广播注册了侦听器。

所以,您应该可以注册ACTION_MY_PACKAGE_REPLACED,并在那里重新启动您的服务。

【讨论】:

最近更新 更多