gpt4 book ai didi

android - 如何从 BroadcastReceiver 中的 Workmanager 检查应用程序是否在前台?

转载 作者:行者123 更新时间:2023-12-05 00:18:48 26 4
gpt4 key购买 nike

有没有办法检查应用程序是否在后台,关闭或从 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)
    ....
    }
    }

    关于android - 如何从 BroadcastReceiver 中的 Workmanager 检查应用程序是否在前台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66188889/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com