首页 > 解决方案 > 有哪些可靠的方法可以从家庭媒体检测活动恢复?

问题描述

用户按下 HOME 按钮后,我想在用户使用时显示密码保护屏幕

  1. 从最近的列表中恢复活动。或者,
  2. 按应用程序图标,并恢复上一个“最小化”活动。

但不是期间

  1. 当用户启动 Activity 时。
  2. 当用户旋转设备时,Activity 经历了配置更改。
  3. 当用户启动“其他活动”时,然后关闭“其他活动”。

以上5个动作,都会触发Activity的onResume

但是,我想为前 2 个操作显示密码保护屏幕,并避免在最后 3 个操作中执行任何操作。

我可以知道,我怎样才能做到这一点?LifecycleObserver能在这方面帮助我吗?


我试过的LifecycleObserver

public class NewGenericFragmentActivity extends AppCompatActivity {

    private static class MyLifeCycleObserver implements DefaultLifecycleObserver {
        @Override
        public void onResume(LifecycleOwner owner) {
            Log.i("CHEOK", "onResume(LifecycleOwner owner)");
        }

        @Override
        public void onPause(LifecycleOwner owner) {
            Log.i("CHEOK", "onPause(LifecycleOwner owner)");
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        this.getLifecycle().addObserver(new MyLifeCycleObserver());

对于MyLifeCycleObserver'sonResumeonPause,它将触发动作 1 到 5。目前尚不清楚如何将动作 1、2 与 3、4、5 分开。

标签: androidandroid-lifecycle

解决方案


是的,LifecycleObserver 可以做到这一点。将正确的导入添加到 build.gradle 文件后,在项目中创建以下文件:

class SampleLifecycleListener : LifecycleObserver {

@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onMoveToForeground() {
    Log.d("SampleLifecycle", "Returning to foreground…")
}

@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onMoveToBackground() {
    Log.d("SampleLifecycle", "Moving to background…")
}
}

并在您应用的自定义 Application 类中,将此行添加到onCreate()

ProcessLifecycleOwner.get().lifecycle.addObserver(SampleLifecycleListener())

推荐阅读