我写了一个应用程序,通过PhoneStateListener监视我的信号强度。我希望这个应用程序在启动时启动并永远运行。
我管理的方式如下,但我想知道是否有人可以推荐更好的方法。
我已经注册了一个在BOOT_COMPLETED上运行的BroadcastReceiver。
在这个BOOT_COMPLETED BroadcastReceiver中,我启动了一个服务。
服务启动我的PhoneStateListener。
在我的BOOT_COMPLETED BroadcastReceiver中,我也通过AlarmManager.setInexactRepeating开始定期闹钟。
每当此警报触发时,它会检查我的服务是否正在运行。如果它没有运行,它会重新启动我的服务,然后重新启动我的PhoneStateListener。
这一切似乎对我有用,但我想知道它是否是确保PhoneStateListener一直在运行(或至少在大多数时间)运行的最佳和最有效的方法
是否有更好的方法可以解决这个问题?
提前致谢。
答案 0 :(得分:1)
您可以将服务作为前台服务,在这种情况下,您的服务实际上不太可能被杀死(仅当当前打开的应用程序需要更多内存时)。
在这种情况下,您的应用必须在服务处于前台时向用户显示持续通知。
为此,您必须调用服务的startForeground()
方法,并向其发送通知:
startForeground(ONGOING_NOTIFICATION_ID, notification);
查看更多信息:http://developer.android.com/guide/components/services.html#Foreground