我需要检查我的应用程序是在后台还是在前台运行,然后相对于它执行一些操作。
我进行了很多搜索,但没有明确的解决方案。
尽管这是实现任务的最佳解决方案,但有时即使在应用程序处于后台时单击电源按钮,也会调用onResume()。
Get Running Taks
还有其他首选的解决方案吗?
最佳答案
原始答案:https://stackoverflow.com/a/60212452/10004454
根据Android文档的推荐方法是
class MyApplication : Application(), LifecycleObserver {
override fun onCreate() {
super.onCreate()
ProcessLifecycleOwner.get().lifecycle.addObserver(this);
}
fun isActivityVisible(): String {
return ProcessLifecycleOwner.get().lifecycle.currentState.name
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onAppBackgrounded() {
//App in background
Log.e(TAG, "************* backgrounded")
Log.e(TAG, "************* ${isActivityVisible()}")
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onAppForegrounded() {
Log.e(TAG, "************* foregrounded")
Log.e(TAG, "************* ${isActivityVisible()}")
// App in foreground
}}
在gradle(应用程序)中添加:
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
然后在运行时检查状态,请调用
MyApplication().isActivityVisible()