优化服务

时间:2014-11-24 13:25:07

标签: android performance android-service

我正在处理一个应用程序,我需要检查用户何时从一个应用程序(例如Facebook)切换到另一个应用程序(例如Gmail)。

为此,我运行后台服务并检查循环中的顶级活动。正如预期的那样,这会导致性能下降,这当然是一种糟糕的方式。我已经考虑过这个计时器任务但是每1秒就会运行一次,所以我采用循环方式保持视野更加精确。

由于在切换发生时没有广播的意图,我被迫采取上述两种方法中的任何一种。对此问题的任何解决方法都将非常感激。

1 个答案:

答案 0 :(得分:0)

1.您正在使用后台服务,无法保证您的服务始终在运行。所以,它不合适。

2.Periodic Service也是一种浪费,因为应用程序切换可能在不到一秒的时间内发生,每秒唤醒一次服务的成本也不会少。

剩下的选项是您可以使用Foreground Service.Foreground Service绝不是具有成本效益的,但似乎可以解决您的问题。用户将始终知道服务正在运行,并且始终可以决定是否启用/禁用该服务。

更新: 如果您真的精通成本,可以使用START_REDELIVER_INTENT进行后台服务。它将告诉系统在崩溃后重新启动并重新获得服务,并重新发送崩溃发生时的意图。