1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License 15 */ 16 17 package com.android.server.job; 18 19 import android.annotation.UserIdInt; 20 import android.app.job.JobInfo; 21 22 import java.util.List; 23 24 /** 25 * JobScheduler local system service interface. 26 * {@hide} Only for use within the system server. 27 */ 28 public interface JobSchedulerInternal { 29 30 // Bookkeeping about app standby bucket scheduling 31 32 /** 33 * The current bucket heartbeat ordinal 34 */ currentHeartbeat()35 long currentHeartbeat(); 36 37 /** 38 * Heartbeat ordinal at which the given standby bucket's jobs next become runnable 39 */ nextHeartbeatForBucket(int bucket)40 long nextHeartbeatForBucket(int bucket); 41 42 /** 43 * Heartbeat ordinal for the given app. This is typically the heartbeat at which 44 * the app last ran jobs, so that a newly-scheduled job in an app that hasn't run 45 * jobs in a long time is immediately runnable even if the app is bucketed into 46 * an infrequent time allocation. 47 */ baseHeartbeatForApp(String packageName, @UserIdInt int userId, int appBucket)48 public long baseHeartbeatForApp(String packageName, @UserIdInt int userId, int appBucket); 49 50 /** 51 * Tell the scheduler when a JobServiceContext starts running a job in an app 52 */ noteJobStart(String packageName, int userId)53 void noteJobStart(String packageName, int userId); 54 55 /** 56 * Returns a list of pending jobs scheduled by the system service. 57 */ getSystemScheduledPendingJobs()58 List<JobInfo> getSystemScheduledPendingJobs(); 59 60 /** 61 * Cancel the jobs for a given uid (e.g. when app data is cleared) 62 */ cancelJobsForUid(int uid, String reason)63 void cancelJobsForUid(int uid, String reason); 64 65 /** 66 * These are for activity manager to communicate to use what is currently performing backups. 67 */ addBackingUpUid(int uid)68 void addBackingUpUid(int uid); removeBackingUpUid(int uid)69 void removeBackingUpUid(int uid); clearAllBackingUpUids()70 void clearAllBackingUpUids(); 71 72 /** 73 * The user has started interacting with the app. Take any appropriate action. 74 */ reportAppUsage(String packageName, int userId)75 void reportAppUsage(String packageName, int userId); 76 77 /** 78 * Report a snapshot of sync-related jobs back to the sync manager 79 */ getPersistStats()80 JobStorePersistStats getPersistStats(); 81 82 /** 83 * Stats about the first load after boot and the most recent save. 84 */ 85 public class JobStorePersistStats { 86 public int countAllJobsLoaded = -1; 87 public int countSystemServerJobsLoaded = -1; 88 public int countSystemSyncManagerJobsLoaded = -1; 89 90 public int countAllJobsSaved = -1; 91 public int countSystemServerJobsSaved = -1; 92 public int countSystemSyncManagerJobsSaved = -1; 93 JobStorePersistStats()94 public JobStorePersistStats() { 95 } 96 JobStorePersistStats(JobStorePersistStats source)97 public JobStorePersistStats(JobStorePersistStats source) { 98 countAllJobsLoaded = source.countAllJobsLoaded; 99 countSystemServerJobsLoaded = source.countSystemServerJobsLoaded; 100 countSystemSyncManagerJobsLoaded = source.countSystemSyncManagerJobsLoaded; 101 102 countAllJobsSaved = source.countAllJobsSaved; 103 countSystemServerJobsSaved = source.countSystemServerJobsSaved; 104 countSystemSyncManagerJobsSaved = source.countSystemSyncManagerJobsSaved; 105 } 106 107 @Override toString()108 public String toString() { 109 return "FirstLoad: " 110 + countAllJobsLoaded + "/" 111 + countSystemServerJobsLoaded + "/" 112 + countSystemSyncManagerJobsLoaded 113 + " LastSave: " 114 + countAllJobsSaved + "/" 115 + countSystemServerJobsSaved + "/" 116 + countSystemSyncManagerJobsSaved; 117 } 118 } 119 } 120