Close preemption loop.
Prior to this change, whenever we preempted a job, the preempted job
would be stopped, but then we wouldn't explicitly start the higher
priority job until we re-evaluated all jobs and regenerated the pending
job list. This was inefficient. Now, whenever a job finishes (via
preemption or any other ending), JobConcurrencyManager will immediately
give the JobServiceContext a new job to start, if limits allow.
Bug: 178119369
Test: atest CtsJobSchedulerTestCases
Test: atest FrameworksMockingServicesTests:JobSchedulerServiceTest
Test: atest FrameworksServicesTests:PrioritySchedulingTest
Test: atest FrameworksServicesTests:WorkCountTrackerTest
Test: atest FrameworksServicesTests:WorkTypeConfigTest
Change-Id: I00a1aca6a3ec42cf6b62712313fa4d1698e34f51
4 files changed