我编写了一个通过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

10-07 12:44
查看更多