我正在处理一个应用程序,我需要检查用户何时从一个应用程序(例如Facebook)切换到另一个应用程序(例如Gmail)。
为此,我运行后台服务并检查循环中的顶级活动。正如预期的那样,这会导致性能下降,这当然是一种糟糕的方式。我已经考虑过这个计时器任务但是每1秒就会运行一次,所以我采用循环方式保持视野更加精确。
由于在切换发生时没有广播的意图,我被迫采取上述两种方法中的任何一种。对此问题的任何解决方法都将非常感激。
答案 0 :(得分:0)
1.您正在使用后台服务,无法保证您的服务始终在运行。所以,它不合适。
2.Periodic Service也是一种浪费,因为应用程序切换可能在不到一秒的时间内发生,每秒唤醒一次服务的成本也不会少。剩下的选项是您可以使用Foreground Service.Foreground Service绝不是具有成本效益的,但似乎可以解决您的问题。用户将始终知道服务正在运行,并且始终可以决定是否启用/禁用该服务。
更新: 如果您真的精通成本,可以使用START_REDELIVER_INTENT进行后台服务。它将告诉系统在崩溃后重新启动并重新获得服务,并重新发送崩溃发生时的意图。