【问题标题】:How to detect previous Activity when app go to background当应用程序进入后台时如何检测以前的活动
【发布时间】:2019-12-20 00:11:54
【问题描述】:

我有 2 个活动: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 时,它是活动生命周期,而不是应用程序生命周期,因此这里无法检测到背景状态。

有没有人有解决这种情况的方法?

【问题讨论】:

  • 为什么要检测?
  • @LakhwinderSingh 我只想在应用程序从某个特殊屏幕进入后台时发送通知。

标签: android background activity-lifecycle application-lifecycle


【解决方案1】:

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

例如:

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;
    }
}

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

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

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

【讨论】:

  • 感谢您的方法。让我试试
  • matdev:工作正常。谢谢 !但是,如果 Activity 有 2 个状态,例如 State1 和 State2。我只想在进入后台时检测到这个 Activity && state == state1 。该怎么做?
  • 好吧,我会在 MyApplication 类中添加一个属性“currentState”,并在您的 Activity 中设置它的值。因此,当应用进入后台时,您可以同时了解当前活动和当前状态
猜你喜欢
  • 1970-01-01
  • 2016-12-18
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
相关资源
最近更新 更多