android - 有哪些可靠的方法可以从家庭媒体检测活动恢复?
问题描述
用户按下 HOME 按钮后,我想在用户使用时显示密码保护屏幕
- 从最近的列表中恢复活动。或者,
- 按应用程序图标,并恢复上一个“最小化”活动。
但不是期间
- 当用户启动 Activity 时。
- 当用户旋转设备时,Activity 经历了配置更改。
- 当用户启动“其他活动”时,然后关闭“其他活动”。
以上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
'sonResume
和onPause
,它将触发动作 1 到 5。目前尚不清楚如何将动作 1、2 与 3、4、5 分开。
解决方案
是的,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())
推荐阅读
- php - PHP循环通过多级Alphavantage API JSON
- css - 用 css 动画点,使它们永远移动
- web-applications - 我可以使用 UML 和维度建模来设计 Web 应用程序吗?
- java - 从 python 代码 (opencv) 移植到 java (android)
- python - 在对一个数据框进行分组以生成字典后,如何将此字典转换回数据框
- android - 带有标记的 Osmdroid MapEventsReceiver 不起作用
- node.js - Mongoose 从 model.find 和 model.FindOne 响应中删除了一些数据
- python - 无法在字典中获取总和
- java - Android:IllegalArgumentException:两个视图在层次结构中具有相同的 id
- android - 需要从 Firebase 存储中获取文件的公共 URL