有没有办法让Activity判断系统是否会在被系统杀死之后重新启动服务?

时间:2015-10-14 23:57:18

标签: android service android-lifecycle android-service-binding

假设我有一个Activity,当用户按下按钮时,使用startService()启动服务。当用户按下另一个按钮时,使用startService()中的另一个意图停止服务,或者它可以决定自行停止。该服务希望永远运行,因此它从START_STICKY返回onStartCommand()。在服务运行时,它连接到某个服务器并接收消息。 Activity绑定到它,绑定时显示这些消息。

现在,当OOM终止后启动Activity时,它不知道服务是否已启动。可以使用onStartCommand()中设置的静态字段来判断服务是否正在运行,但这种情况迟早会适得其反。此外,在活动启动后,系统可以启动服务,因此使用静态字段根本不是一个选项。

我能想出的最干净的解决方案是使用SharedPreferences来存储服务的状态。当服务在SharedPreferences.setBoolean("running", false)stopSelf()之间被杀死时,这将不会很好,但这样的事情可能很少发生。

此外,我可以尝试始终绑定到服务。这将是非常丑陋的,但仍然不是不可能。

还有其他解决方案吗?也许这个想法在某种程度上是错误的?

0 个答案:

没有答案