OSDN Git Service

Use data plans for better job scheduling.
authorJeff Sharkey <jsharkey@android.com>
Thu, 18 Jan 2018 22:58:35 +0000 (07:58 +0900)
committerJeff Sharkey <jsharkey@android.com>
Fri, 19 Jan 2018 06:50:12 +0000 (15:50 +0900)
commit9252b34065809731ea2f6d3ffad91f678f809c93
treecd4e63c7ab82fd449f476cc6b4ae27e8a2828f39
parentc694cde7bbb797699485b9df62c25f6e242852c6
Use data plans for better job scheduling.

Now that we have data plan information from the carrier, we can start
using it to influence when we schedule jobs.  As a first pass
algorithm:

-- If the network is congested, and a job is less than 50% through
its runnable window, then we'll defer it for awhile.
-- If the network has a surplus of data, we'll consider using some
of it to improve the user experience by running prefetching jobs.

Provider APIs for carrier apps to override their connections to be
temporarily marked as either "unmetered" or "congested", along with
automatic timeouts if desired.

Flag for developers to indicate which jobs will have a material
positive impact on end users.  (We don't want to promote jobs that
are simply doing logs upload; for example.)  Glue code to quickly
return targetSdk of a specific package.

More tweaking to the exact algorithms will come in future CLs.

Test: bit FrameworksServicesTests:com.android.server.job.
Bug: 64133169
Change-Id: Iabb9f90a7a65958ad648b091edec378fc3bf785a
14 files changed:
api/current.txt
api/system-current.txt
core/java/android/app/job/JobInfo.java
core/java/android/content/pm/PackageManagerInternal.java
core/java/android/net/INetworkPolicyManager.aidl
services/core/java/com/android/server/job/controllers/ConnectivityController.java
services/core/java/com/android/server/job/controllers/JobStatus.java
services/core/java/com/android/server/net/NetworkPolicyManagerInternal.java
services/core/java/com/android/server/net/NetworkPolicyManagerService.java
services/core/java/com/android/server/pm/PackageManagerService.java
services/tests/servicestests/src/com/android/server/job/JobStoreTest.java
services/tests/servicestests/src/com/android/server/job/controllers/ConnectivityControllerTest.java [new file with mode: 0644]
services/tests/servicestests/src/com/android/server/job/controllers/JobStatusTest.java [new file with mode: 0644]
telephony/java/android/telephony/SubscriptionManager.java