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