在手机解锁一段时间后运行服务

时间:2012-07-31 13:26:06

标签: android

我正在寻找一种在一定时间后运行服务的方法。但是,我无法使用标准AlarmManager来解决此问题,因为我不想依赖我的应用程序一直运行,而且AlarmManager会考虑手机被锁定的时间。

基本上,目标是在用户使用手机一段时间(例如一小时)后运行服务。此计时器应允许在手机锁定或关闭时中断。

1 个答案:

答案 0 :(得分:0)

经过一系列的研究,我发现最好的方法是:

  • 通过setRepeating方法为AlarmManager创建一个每10秒运行一次的服务。
  • 如果创建AlarmManager的应用程序被停止,一旦应用程序重新启动,也只需重新启动重复警报。
  • 当服务每10秒运行一次时,请使用以下代码检查手机是否已锁定:

    KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); boolean locked = keyguardManager.inKeyguardRestrictedInputMode();

    如果手机未锁定,则让服务增加一个数据库变量,以便将时间跟踪10秒。

  • 在更新数据库后,无论总解锁时间是否超过最大时间,都要进行服务检查。如果是,则激活任何事件。

如果有人提出更好(更清洁)的方法,我会接受这个答案。