我正在寻找一种在一定时间后运行服务的方法。但是,我无法使用标准AlarmManager来解决此问题,因为我不想依赖我的应用程序一直运行,而且AlarmManager会考虑手机被锁定的时间。
基本上,目标是在用户使用手机一段时间(例如一小时)后运行服务。此计时器应允许在手机锁定或关闭时中断。
答案 0 :(得分:0)
经过一系列的研究,我发现最好的方法是:
setRepeating
方法为AlarmManager创建一个每10秒运行一次的服务。当服务每10秒运行一次时,请使用以下代码检查手机是否已锁定:
KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
boolean locked = keyguardManager.inKeyguardRestrictedInputMode();
如果手机未锁定,则让服务增加一个数据库变量,以便将时间跟踪10秒。
在更新数据库后,无论总解锁时间是否超过最大时间,都要进行服务检查。如果是,则激活任何事件。
如果有人提出更好(更清洁)的方法,我会接受这个答案。