在我的录音应用程序中,我创建了一个作业服务,它将按计划的频率间隔安排录制作业。一旦我安排作业记录每5分钟(例子),在几次录制后,当我强制停止应用程序时,我可以看到作业服务仍在运行并尝试记录并失败。应用程序中的所有其他服务都已停止。
当我强制停止应用程序时,为什么作业服务仍在运行?我是否需要特别小心地停止工作?
答案 0 :(得分:0)
很多 Android应用在后台运行小型服务 允许互连与其他应用/服务和 当您不使用应用程序(Facebook,短信,电子邮件,广告等)时,允许通知。请注意,在后台运行的SERVICE与在后台运行的APP之间运行的APP之间存在差异。
因此,您可以在用户关闭应用时通过以下两种方式销毁服务来阻止它。
首先,在服务类中,调用:
stopSelf();
OR
其次,在其他课程中,例如 MainActivity :
Intent i = new Intent(this, ServiceName.class);
stopService(i);
这两项都会停止您的服务。确保您返回START_NOT_STICKY,以便该服务不会再次启动。
答案 1 :(得分:0)
在清单文件中使用以下代码作为您的服务。这将停止服务的任务。
master
答案 2 :(得分:0)
你的工作是定期工作,对吗?您是否尝试使用各自的ID明确取消作业?
JobScheduler scheduler = (JobScheduler)
mContext.getSystemService(Context.JOB_SCHEDULER_SERVICE);
for (JobInfo jobInfo : scheduler.getAllPendingJobs()) {
if (jobInfo.getId() == jobID) {
scheduler.cancel(jobID);
Log.i(TAG,"Cancelled Job with ID:" + jobID);
}
}
或者您可以尝试取消已通过此套件注册JobScheduler的所有作业。
JobScheduler scheduler = (JobScheduler)
mContext.getSystemService(Context.JOB_SCHEDULER_SERVICE);
scheduler.cancelAll();
答案 3 :(得分:0)
我知道为时已晚,但我发表我的答案以供将来参考:
Job Scheduler将继续工作至少15分钟。(即使您最近通过滑动或强制停止清除了该应用程序也是如此)
因此,如果您希望服务在应用程序关闭后停止运行,则应使用Bound Service。
绑定服务将继续工作(即使在后台),直到关闭应用程序为止。