如何检测Android应用程序何时进入后台并返回前台

新手上路,请多包涵

我正在尝试编写一个应用程序,当它在一段时间后回到前台时会执行特定的操作。有没有办法检测应用程序何时被发送到后台或被带到前台?

原文由 iHorse 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 990
2 个回答

onPause()onResume() 方法在应用程序进入后台并再次进入前台时被调用。但是,它们也会在应用程序第一次启动时以及在它被终止之前被调用。您可以在 Activity 中阅读更多内容。

没有任何直接的方法可以在后台或前台获取应用程序状态,但即使我也遇到了这个问题并找到了解决方案 onWindowFocusChangedonStop

有关更多详细信息,请在此处查看 _Android:检测 Android 应用程序何时进入后台并在没有 getRunningTasks 或 getRunningAppProcesses 的情况下返回前台的解决方案_。

原文由 Swind 发布,翻译遵循 CC BY-SA 3.0 许可协议

LifecycleObserver 已弃用。使用 DefaultLifecycleObserver 代替:

 public class MyApplication extends Application implements DefaultLifecycleObserver {

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

    @Override
    public void onStart(@NonNull LifecycleOwner owner) {
        DefaultLifecycleObserver.super.onStart(owner);
    }

    @Override
    public void onResume(@NonNull LifecycleOwner owner) {
        DefaultLifecycleObserver.super.onResume(owner);
    }

    @Override
    public void onPause(@NonNull LifecycleOwner owner) {
        DefaultLifecycleObserver.super.onPause(owner);
    }

    @Override
    public void onStop(@NonNull LifecycleOwner owner) {
        DefaultLifecycleObserver.super.onStop(owner);
    }

    @Override
    public void onDestroy(@NonNull LifecycleOwner owner) {
        DefaultLifecycleObserver.super.onDestroy(owner);
    }
}

依赖项:

   implementation 'androidx.lifecycle:lifecycle-common:2.5.1'
  implementation 'androidx.lifecycle:lifecycle-process:2.5.1'

原文由 Micro 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题