能否使服务长时间工作
经过大量研究,我找不到很好的结果。我想创建可以使用很长时间的服务,但是在我关闭应用程序后,这些服务将被破坏。我会做什么?
我尝试了永不结束的后台服务,但这没有帮助
上面的链接显示了一些可以长时间工作的应用程序服务,例如121小时
答案 0 :(得分:1)
您可以运行val double = (i: Int) => { i * 2 }
,而ForegroundService
是高优先级服务,因此只有在绝对必要时它才会被杀死。 Official docs reference
通过在ForegroundService
中返回START_STICKY
,即使应用程序被终止,您也可以保持前台服务运行。
onStartCommand
START_STICKY
恒定从
@Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i("LocalService", "Received start id " + startId + ": " + intent); // We want this service to continue running until it is explicitly // stopped, so return sticky. return START_STICKY; }
返回:如果此服务的进程在启动时被杀死(从onStartCommand(Intent, int, int)
返回之后,则使其保持启动状态,但不保留此传递的意图。)系统将尝试重新创建服务,因为它处于启动状态,因此它将确保在创建新服务实例后调用onStartCommand(Intent, int, int))
;如果没有任何待处理的启动命令要传递给该服务, ,它将使用空的intent对象调用,因此您必须注意进行检查。对于在任意时间段内将明确启动和停止运行的事物(例如执行背景音乐播放的服务),此模式很有意义。