1

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

我管理它的方式如下,但我想知道是否有人可以推荐一种更好的方法。

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

在这个 BOOT_COMPLETED 广播接收器中,我启动了一个服务。

该服务启动了我的 PhoneStateListener。

在我的 BOOT_COMPLETED BroadcastReceiver 中,我还通过 AlarmManager.setInexactRepeating 启动定期警报。

每当此警报触发时,它都会检查我的服务是否正在运行。如果它没有运行,它会重新启动我的服务,进而重新启动我的 PhoneStateListener。

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

有没有更好的方法来管理这个?

提前致谢。

4

1 回答 1

1

您可以使您的服务成为前台服务,在这种情况下,您的服务真的不太可能被杀死(仅当当前打开的应用程序需要更多内存时)。

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

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

startForeground(ONGOING_NOTIFICATION_ID, notification);

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

于 2015-10-10T13:00:24.163 回答