有没有一种方法可以在BroadcastReceiver中通过Workmanager检查应用程序是否在后台、关闭或运行?当应用程序关闭或在后台时,我想显示内部通知。
我已经找到了一些相关的主题,但不幸的是,自Android 10以来限制发生了变化,这使得它有点困难。
提前致谢。
有没有一种方法可以在BroadcastReceiver中通过Workmanager检查应用程序是否在后台、关闭或运行?当应用程序关闭或在后台时,我想显示内部通知。
我已经找到了一些相关的主题,但不幸的是,自Android 10以来限制发生了变化,这使得它有点困难。
提前致谢。
class MyApplication : Application(), LifecycleObserver {
private val sharedPreferences by lazy {
PreferenceManager.getDefaultSharedPreferences(this)
}
override fun onCreate() {
super.onCreate()
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onAppBackgrounded() {
sharedPreferences.edit(commit = true) { putString("isAppOnForeground", false) }
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onAppForegrounded() {
sharedPreferences.edit(commit = true) { putString("isAppOnForeground", true) }
}
}
class YourWorker constructor(
private val context: Context,
private val workParams: WorkerParameters
) : CoroutineWorker(context, workParams) {
private val sharedPreferences by lazy {
PreferenceManager.getDefaultSharedPreferences(context)
}
override suspend fun doWork(): Result {
val isAppOnForeground = sharedPreferences.getBoolean("isAppOnForeground", false)
....
}
}