gpt4 book ai didi

android - 当应用程序进入后台时如何检测以前的 Activity

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:10:14 25 4
gpt4 key购买 nike

我有 2 个 Activity :ActivityA 和 ActivityB。
当应用程序进入后台时,我想检测哪个 Activity 刚刚在前台。
例如 :Activity A 在前台 -> 单击主页按钮 -> 应用程序转到后台

onBackground: ActivityA

Activity B 在前台 -> 单击主页按钮 -> 应用程序转到后台

onBackground: ActivityB

我对 ProcessLifecycleObserver 感到困惑

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onEnterForeground() {
}

@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onEnterBackground() {
}

因为这里检测不到哪个Activity?

当我尝试使用 ActivityLifecycleCallbacks 时,它是 Activity 生命周期,而不是应用程序生命周期,因此无法在此处检测到后台状态。

有人有解决方案吗?

最佳答案

您应该使用 android.arch.lifecycle 包,它提供的类和接口(interface)可让您构建生命周期感知组件。

例如:

public class MyApplication extends Application implements LifecycleObserver {

String currentActivity;

@Override
public void onCreate() {
super.onCreate();
ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
}

@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
private void onAppBackgrounded() {
Log.d("MyApp", "App in background");
}

@OnLifecycleEvent(Lifecycle.Event.ON_START)
private void onAppForegrounded() {
Log.d("MyApp", "App in foreground");
}

public void setCurrentActivity(String currentActivity){
this.currentActivity = currentActivity;
}
}

在您的 Activity 的 onResume() 方法中,您可以在 MyApplication 单例实例中维护 currentActivity 变量:

@Override
protected void onResume() {
super.onResume();
MyApplication.getInstance().setCurrentActivity(getClass().getName());
}

并检查 onAppBackgrounded() 中的 currentActivity 属性值。

关于android - 当应用程序进入后台时如何检测以前的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57477707/

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