是否可以通过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)
....
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句