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
我写了一个应用程序,它通过 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