通过从 onDestoy 方法调用 startService 来保持服务持久化
Keeping a service persistent by calling startService from the onDestoy method
我有一个服务在做一些后台工作,只要我的应用程序中的某些特定条件发生变化,它就应该继续 运行。我使用了 START_STICKY 标志。
但是,Android系统在需要资源的时候还是会终止服务。
我想到了解决方法。我想从 onDestroy 方法调用 startService 方法(基于我的应用程序中满足的内部条件),以便当 android 服务终止此服务时,如果我的应用程序需要,它将重新启动。
这行得通吗?这对设备有任何危害吗?
A service running all the time == fast battery drainage
无论如何......我建议你改变你的设计,即在你的应用程序中使用 BroadcastReceiver
来监听调用状态变化,当调用状态改变时你的应用程序将捕获广播然后你可以做任何事情 during/after call.
然后您可以从广播接收器启动服务.. 它应该执行您需要的任务,例如,调用状态更改、广播被触发、您的应用程序获取它,然后您检查调用状态是什么,如果它打开呼叫,然后启动您的服务.. 然后当呼叫断开连接时,系统将触发另一个广播,您的应用程序将收到它,然后您将再次检查呼叫状态,如果断开连接则停止服务。希望你能把我带到这里。
我有一个服务在做一些后台工作,只要我的应用程序中的某些特定条件发生变化,它就应该继续 运行。我使用了 START_STICKY 标志。
但是,Android系统在需要资源的时候还是会终止服务。
我想到了解决方法。我想从 onDestroy 方法调用 startService 方法(基于我的应用程序中满足的内部条件),以便当 android 服务终止此服务时,如果我的应用程序需要,它将重新启动。
这行得通吗?这对设备有任何危害吗?
A service running all the time == fast battery drainage
无论如何......我建议你改变你的设计,即在你的应用程序中使用 BroadcastReceiver
来监听调用状态变化,当调用状态改变时你的应用程序将捕获广播然后你可以做任何事情 during/after call.
然后您可以从广播接收器启动服务.. 它应该执行您需要的任务,例如,调用状态更改、广播被触发、您的应用程序获取它,然后您检查调用状态是什么,如果它打开呼叫,然后启动您的服务.. 然后当呼叫断开连接时,系统将触发另一个广播,您的应用程序将收到它,然后您将再次检查呼叫状态,如果断开连接则停止服务。希望你能把我带到这里。