Android:永久保留 PhoneStateListener 运行 的推荐方法?

Android: Recommended way to keep a PhoneStateListener running forever?

我写了一个应用程序,它通过 PhoneStateListener 监控我的信号强度。我希望这个应用程序在启动时启动并且 运行 永远。

我的处理方法如下,但我想知道是否有人可以推荐更好的方法。

我注册了一个 运行 在 BOOT_COMPLETED 上的 BroadcastReceiver。

在这个 BOOT_COMPLETED BroadcastReceiver 中,我启动了一个服务。

该服务启动我的 PhoneStateListener。

在我的 BOOT_COMPLETED BroadcastReceiver 中,我还通过 AlarmManager.setInexactRepeating.

启动定期警报

每当此警报响起时,它都会检查我的服务是否 运行ning。如果它不是 运行ning,它会重新启动我的服务,这又会重新启动我的 PhoneStateListener。

这一切似乎对我有用,但我想知道这是否是确保 PhoneStateListener 始终 运行ning 的最佳和最有效的方法(或至少大部分时间).

是否有更好的方法来管理它?

提前致谢。

你可以让你的服务成为前台服务,这样的话你的服务真的不太可能被杀死(只有当前打开的应用程序需要更多内存时)。

在这种情况下,您的应用必须在服务处于前台时向用户显示持续通知。

为此,您必须调用服务的 startForeground() 方法,向其提供通知:

startForeground(ONGOING_NOTIFICATION_ID, notification);

查看更多信息:http://developer.android.com/guide/components/services.html#Foreground