Android-作业调度器还是广播接收器?

Android-作业调度器还是广播接收器?,android,broadcastreceiver,android-jobscheduler,Android,Broadcastreceiver,Android Jobscheduler,在我的Android应用程序中,每当用户插入设备时,我都需要做一些工作。为此,我现在使用一个BroadcastReceiver,当用户插入设备时,它启动我的IntentService来完成工作,当设备被拔出时,它停止工作 现在我正在考虑使用Android 5.0+的JobScheduler,但我看到的是,有了JobScheduler,我必须在应用程序中通过调用 JobScheduler.schedule(JobInfo); 但这对我来说是个问题,因为我希望每次用户将设备连接到充电器时都能运行我

在我的Android应用程序中,每当用户插入设备时,我都需要做一些工作。为此,我现在使用一个BroadcastReceiver,当用户插入设备时,它启动我的IntentService来完成工作,当设备被拔出时,它停止工作

现在我正在考虑使用Android 5.0+的JobScheduler,但我看到的是,有了JobScheduler,我必须在应用程序中通过调用

JobScheduler.schedule(JobInfo);
但这对我来说是个问题,因为我希望每次用户将设备连接到充电器时都能运行我的作业,即使用户不必打开我的应用程序

出于这个原因,我认为一种方法是在用户第一次打开应用程序时安排,然后总是强制重新安排,因为我不能信任每天打开我的应用程序的用户(由于我的应用程序的性质,这肯定不会发生)

那么,我应该坚持使用BroadcastReceiver还是使用Android 5.0+的JobScheduler

在使用JobScheduler的情况下,我应该只调度一次作业,然后始终返回true以强制重新调度吗


谢谢。

作业计划程序在后台运行,并在重新启动时持续运行,因此您应该没事。

作业计划程序在后台运行,并在重新启动时持续运行,因此您应该没事

那么,我应该坚持使用BroadcastReceiver还是使用Android 5.0+的JobScheduler

使用JobScheduler,这可以提高应用程序的性能,以及电池寿命等系统健康方面的性能。此外,JobScheduler通过设备重新启动保持不变,并支持批量调度,通过批量调度,android系统可以组合挂起的作业,从而减少电池使用。此外,您可以区分android版本,因此在棒棒糖和更高版本上使用JobScheduler,在旧版本上使用AlarmManager

在使用JobScheduler的情况下,我应该只调度一次作业,然后始终返回true以强制重新调度吗

现在,有两种方法可以做到这一点:

  • 正如您所猜测的,在jobFinished()中只安排一次作业并始终返回true-这应该可以实现

  • 在完成一个作业(最初由您通过调用JobScheduler.schedule(JobInfo))来计划)后,您可以通过调用同一个作业来计划另一个作业。这将在每个作业即将完成时安排后续作业

  • 那么,我应该坚持使用BroadcastReceiver还是使用Android 5.0+的JobScheduler

    使用JobScheduler,这可以提高应用程序的性能,以及电池寿命等系统健康方面的性能。此外,JobScheduler通过设备重新启动保持不变,并支持批量调度,通过批量调度,android系统可以组合挂起的作业,从而减少电池使用。此外,您可以区分android版本,因此在棒棒糖和更高版本上使用JobScheduler,在旧版本上使用AlarmManager

    在使用JobScheduler的情况下,我应该只调度一次作业,然后始终返回true以强制重新调度吗

    现在,有两种方法可以做到这一点:

  • 正如您所猜测的,在jobFinished()中只安排一次作业并始终返回true-这应该可以实现

  • 在完成一个作业(最初由您通过调用JobScheduler.schedule(JobInfo))来计划)后,您可以通过调用同一个作业来计划另一个作业。这将在每个作业即将完成时安排后续作业


  • 通过广播接收器收听电池更换状态:通过广播接收器收听电池更换状态: