gpt4 book ai didi

android - 在一定的空闲时间后锁定 android 应用程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:36:15 25 4
gpt4 key购买 nike

我的 android 应用程序要求在第一个 Activity 中输入密码。我希望能够在应用程序空闲一段固定时间后自动将应用程序发送回密码输入屏幕。

应用程序有多个 Activity ,但我希望所有 Activity 的超时都是全局的。因此,在 ActivityonPause() 方法中创建计时器线程是不够的。

我不确定应用程序处于空闲状态的最佳定义是什么,但没有 Activity Activity 就足够了。

最佳答案

我知道另一个答案已经被接受,但我遇到了这个解决类似问题的问题,我想我会尝试另一种更简单的方法,我想如果其他人想尝试,我也可以记录下来沿着相同的路径。在此处输入代码

一般的想法只是在任何 Activity 暂停时跟踪 SharedPreference 中的系统时钟时间 - 听起来很简单,但遗憾的是,如果你只使用它,就会存在安全漏洞,因为该时钟会在重启时重置。要解决此问题:

  • 有一个 Application 子类或共享静态单例类,具有全局解锁自启动状态(最初为 false)。该值应与您的应用程序进程一样长。
  • 将每个相关 ActivityonPause 中的系统时间(自启动以来的 realtime)保存到 SharedPreference 中(如果当前应用状态)已解锁。
  • 如果应用程序自启动后解锁状态为 false(干净的应用程序启动 - 应用程序或手机重新启动),显示锁定屏幕。否则,在可锁定 Activity 的 onResume 中检查 SharedPreference 的值;如果它不存在或大于 SharedPreference 值 + 超时间隔,也显示锁定屏幕。
  • 应用解锁后,将应用范围内的 unlocked-since-boot 状态设置为 true。

除了超时之外,如果您的应用程序被终止并重新启动,或者如果您的手机重新启动,这种方法还会自动锁定您的应用程序,但我认为这对大多数应用程序来说并不是一个特别糟糕的问题。它有点过于安全,可能会不必要地锁定那些经常切换任务的用户,但我认为通过完全消除任何后台进程/唤醒锁问题(不需要服务、警报或接收器)来减少代码和复杂性是一个值得的权衡).

要解决进程终止锁定应用程序而不考虑时间的问题,而不是共享应用程序范围内的单例以解锁自启动以来,您可以使用 SharedPreference 并为系统启动广播 Intent 注册一个监听器以将 Preference 设置为 false .这重新增加了初始解决方案的一些复杂性,好处是在应用程序的进程在超时间隔内在后台被终止的情况下更加方便,尽管对于大多数应用程序来说,这可能有点过头了。

关于android - 在一定的空闲时间后锁定 android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/576600/

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