Loading services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +7 −2 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ import android.app.PendingIntent; import android.app.StatsManager; import android.app.admin.DevicePolicyManagerInternal; import android.app.admin.DevicePolicyManagerInternal.OnCrossProfileWidgetProvidersChangeListener; import android.app.job.JobScheduler; import android.app.usage.UsageEvents; import android.app.usage.UsageStatsManager; import android.app.usage.UsageStatsManagerInternal; Loading Loading @@ -330,6 +331,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku private UserManager mUserManager; private AppOpsManager mAppOpsManager; private KeyguardManager mKeyguardManager; private JobScheduler mJobScheduler; private DevicePolicyManagerInternal mDevicePolicyManagerInternal; private PackageManagerInternal mPackageManagerInternal; private ActivityManagerInternal mActivityManagerInternal; Loading Loading @@ -384,6 +386,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); mAppOpsManager = (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE); mKeyguardManager = (KeyguardManager) mContext.getSystemService(KEYGUARD_SERVICE); mJobScheduler = (JobScheduler) mContext.getSystemService(Context.JOB_SCHEDULER_SERVICE); mDevicePolicyManagerInternal = LocalServices.getService(DevicePolicyManagerInternal.class); mPackageManagerInternal = LocalServices.getService(PackageManagerInternal.class); if (removeAppWidgetServiceIoFromCriticalPath()) { Loading Loading @@ -419,7 +422,6 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku mWidgetEventsReportIntervalMs = DeviceConfig.getLong(NAMESPACE_SYSTEMUI, SystemUiDeviceConfigFlags.WIDGET_EVENTS_REPORT_INTERVAL_MS, DEFAULT_WIDGET_EVENTS_REPORT_INTERVAL_MS); ReportWidgetEventsJob.schedule(mContext, mWidgetEventsReportIntervalMs); DeviceConfig.addOnPropertiesChangedListener(NAMESPACE_SYSTEMUI, new HandlerExecutor(mCallbackHandler), this::handleSystemUiDeviceConfigChange); Loading Loading @@ -458,6 +460,9 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku mAppOpsManagerInternal = LocalServices.getService(AppOpsManagerInternal.class); mUsageStatsManagerInternal = LocalServices.getService(UsageStatsManagerInternal.class); registerPullCallbacks(); // Schedule may take several milliseconds due to lock contention BackgroundThread.getExecutor().execute( () -> ReportWidgetEventsJob.schedule(mJobScheduler, mWidgetEventsReportIntervalMs)); } /** Loading Loading @@ -5638,7 +5643,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku mWidgetEventsReportIntervalMs = properties.getLong( SystemUiDeviceConfigFlags.WIDGET_EVENTS_REPORT_INTERVAL_MS, /* defaultValue = */ mWidgetEventsReportIntervalMs); ReportWidgetEventsJob.schedule(mContext, mWidgetEventsReportIntervalMs); ReportWidgetEventsJob.schedule(mJobScheduler, mWidgetEventsReportIntervalMs); } } } Loading services/appwidget/java/com/android/server/appwidget/ReportWidgetEventsJob.java +4 −5 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import android.app.job.JobScheduler; import android.app.job.JobService; import android.appwidget.AppWidgetManagerInternal; import android.content.ComponentName; import android.content.Context; import android.util.Slog; import com.android.internal.os.BackgroundThread; Loading @@ -40,10 +39,9 @@ public class ReportWidgetEventsJob extends JobService { private static final String NAMESPACE = "com.android.server.appwidget.AppWidgetServiceImpl.ReportWidgetEventsJob"; static void schedule(Context context, long periodMillis) { static void schedule(JobScheduler jobScheduler, long periodMillis) { try { JobScheduler jobScheduler = context.getSystemService(JobScheduler.class) .forNamespace(NAMESPACE); jobScheduler = jobScheduler.forNamespace(NAMESPACE); // If periodMillis is 0 or less, do not schedule a job. The event will be reported to // UsageStatsManager as soon as it is received from the widget view. Loading @@ -52,7 +50,8 @@ public class ReportWidgetEventsJob extends JobService { return; } ComponentName component = new ComponentName(context, ReportWidgetEventsJob.class); ComponentName component = new ComponentName("android", ReportWidgetEventsJob.class.getName()); JobInfo newJob = new JobInfo.Builder(JOB_ID, component) .setRequiresDeviceIdle(false) .setPeriodic(periodMillis) Loading Loading
services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +7 −2 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ import android.app.PendingIntent; import android.app.StatsManager; import android.app.admin.DevicePolicyManagerInternal; import android.app.admin.DevicePolicyManagerInternal.OnCrossProfileWidgetProvidersChangeListener; import android.app.job.JobScheduler; import android.app.usage.UsageEvents; import android.app.usage.UsageStatsManager; import android.app.usage.UsageStatsManagerInternal; Loading Loading @@ -330,6 +331,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku private UserManager mUserManager; private AppOpsManager mAppOpsManager; private KeyguardManager mKeyguardManager; private JobScheduler mJobScheduler; private DevicePolicyManagerInternal mDevicePolicyManagerInternal; private PackageManagerInternal mPackageManagerInternal; private ActivityManagerInternal mActivityManagerInternal; Loading Loading @@ -384,6 +386,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); mAppOpsManager = (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE); mKeyguardManager = (KeyguardManager) mContext.getSystemService(KEYGUARD_SERVICE); mJobScheduler = (JobScheduler) mContext.getSystemService(Context.JOB_SCHEDULER_SERVICE); mDevicePolicyManagerInternal = LocalServices.getService(DevicePolicyManagerInternal.class); mPackageManagerInternal = LocalServices.getService(PackageManagerInternal.class); if (removeAppWidgetServiceIoFromCriticalPath()) { Loading Loading @@ -419,7 +422,6 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku mWidgetEventsReportIntervalMs = DeviceConfig.getLong(NAMESPACE_SYSTEMUI, SystemUiDeviceConfigFlags.WIDGET_EVENTS_REPORT_INTERVAL_MS, DEFAULT_WIDGET_EVENTS_REPORT_INTERVAL_MS); ReportWidgetEventsJob.schedule(mContext, mWidgetEventsReportIntervalMs); DeviceConfig.addOnPropertiesChangedListener(NAMESPACE_SYSTEMUI, new HandlerExecutor(mCallbackHandler), this::handleSystemUiDeviceConfigChange); Loading Loading @@ -458,6 +460,9 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku mAppOpsManagerInternal = LocalServices.getService(AppOpsManagerInternal.class); mUsageStatsManagerInternal = LocalServices.getService(UsageStatsManagerInternal.class); registerPullCallbacks(); // Schedule may take several milliseconds due to lock contention BackgroundThread.getExecutor().execute( () -> ReportWidgetEventsJob.schedule(mJobScheduler, mWidgetEventsReportIntervalMs)); } /** Loading Loading @@ -5638,7 +5643,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku mWidgetEventsReportIntervalMs = properties.getLong( SystemUiDeviceConfigFlags.WIDGET_EVENTS_REPORT_INTERVAL_MS, /* defaultValue = */ mWidgetEventsReportIntervalMs); ReportWidgetEventsJob.schedule(mContext, mWidgetEventsReportIntervalMs); ReportWidgetEventsJob.schedule(mJobScheduler, mWidgetEventsReportIntervalMs); } } } Loading
services/appwidget/java/com/android/server/appwidget/ReportWidgetEventsJob.java +4 −5 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import android.app.job.JobScheduler; import android.app.job.JobService; import android.appwidget.AppWidgetManagerInternal; import android.content.ComponentName; import android.content.Context; import android.util.Slog; import com.android.internal.os.BackgroundThread; Loading @@ -40,10 +39,9 @@ public class ReportWidgetEventsJob extends JobService { private static final String NAMESPACE = "com.android.server.appwidget.AppWidgetServiceImpl.ReportWidgetEventsJob"; static void schedule(Context context, long periodMillis) { static void schedule(JobScheduler jobScheduler, long periodMillis) { try { JobScheduler jobScheduler = context.getSystemService(JobScheduler.class) .forNamespace(NAMESPACE); jobScheduler = jobScheduler.forNamespace(NAMESPACE); // If periodMillis is 0 or less, do not schedule a job. The event will be reported to // UsageStatsManager as soon as it is received from the widget view. Loading @@ -52,7 +50,8 @@ public class ReportWidgetEventsJob extends JobService { return; } ComponentName component = new ComponentName(context, ReportWidgetEventsJob.class); ComponentName component = new ComponentName("android", ReportWidgetEventsJob.class.getName()); JobInfo newJob = new JobInfo.Builder(JOB_ID, component) .setRequiresDeviceIdle(false) .setPeriodic(periodMillis) Loading