后台任务问题

时间:2018-12-23 16:57:48

标签: android android-service android-alarms android-jobscheduler android-background

我最近一直在阅读有关Android中后台工作的完成方式(使用Service,AlarmManager,JobScheduler等),并了解到即使应用程序已关闭或设备已关闭,这些后台任务也可以无限期地执行。我了解只有他们停止自己或其他组件停止他们才停止。

问题:

  1. 如果我有后台工作或每隔1小时发出一次警报。它真的可以永远运行直到组件停止它们吗?系统是否会阻止它们?

  2. 如果我每隔1个小时有一次定期工作或发出警报,该怎么办。如果我卸载启动它们的应用程序,它们会停止吗? Cos我从未在任何文档中阅读过此部分。

  3. 是否可以检查设备中任何正在运行或正在等待的后台作业/警报?

1 个答案:

答案 0 :(得分:0)

问题中有关后台任务的说明仅适用于后台服务,仅适用于26以下的Android API级别。

Google建议即使应用不在前台,也要使用JobScheduler或Foreground Service在后台进行一些工作。

出现问题

  1. 否,如果您使用JobScheduler或Alarm Manager,系统将根据您的设备闲置情况和您提到的条件触发您的工作来完成您的工作,但是在出现这种情况时,系统可以随时停止您的工作不再见面。

    如果您正在使用JobScheduler,它将在系统要强制停止时通知您,以便您可以正确处理它并在需要时重新安排时间

  2. 卸载该应用程序后,计划或进行中的每个作业或警报都将被销毁。
  3. 是的,JobScheduler确实提供了一个函数'getAllPendingJobs'

注意:

  • 对于即使关闭应用程序也应安排或完成的工作,请尝试避免使用后台服务或警报管理器。 JobScheduler是更好的替代方案。
  • 如果您想在应用程序处于前台状态时做一些简单的后台工作,请尝试使用HandlerThreads或AsyncTasks