我正在开发一款应用程序,可以跟踪用户手机“未使用”的时间。
基本上,一个应用程序会在用户按下解锁或来电时立即激活。我写了一个BroadcastReceiver
,通知后台服务开始跟踪手机未被使用的时间,并在用户按下锁定时立即显示活动。
我的问题是服务有时会在没有通知的情况下关闭。我是否可以再写一个可以定期检查主服务是否正在运行的服务,并在关机时进行切换?或者还有其他更好的方法吗?
答案 0 :(得分:1)
已启动的服务可以使用startForeground(int,Notification)API将服务置于前台状态,系统认为该服务是用户主动了解的内容,因此在内存不足时不会成为查杀的候选者。 (从理论上讲,服务在当前前台应用程序的极端内存压力下被杀死仍然是可能的,但实际上这不应该是一个问题。)
答案 1 :(得分:1)
是的,您可以在服务中启动其他服务。实际上你总是这样做,但你不知道它。我的意思是当你在服务中调用getSystemService(....)初始化程序时,你使用另一个由android声明的服务。
答案 2 :(得分:0)
我不是那么经验但是你应该能够通过向其他服务发送意图来启动另一项服务,如果你愿意的话,如果系统根据{{3}处于严重的内存压力下可能会被系统杀死}。
您应该能够检查您的服务是否正在运行。