SystemAlarmService.java revision 697d6a4a3797bc71d0dd8685937a318e9934066b
1a92623408ef72ecfb70083938eb5896199589c79Jan Clarin/* 2dd3c04c8aa64eb9c8d3da1bbac6024e613d39143Rahul Ravikumar * Copyright 2018 The Android Open Source Project 3a92623408ef72ecfb70083938eb5896199589c79Jan Clarin * 4a92623408ef72ecfb70083938eb5896199589c79Jan Clarin * Licensed under the Apache License, Version 2.0 (the "License"); 5a92623408ef72ecfb70083938eb5896199589c79Jan Clarin * you may not use this file except in compliance with the License. 6a92623408ef72ecfb70083938eb5896199589c79Jan Clarin * You may obtain a copy of the License at 7a92623408ef72ecfb70083938eb5896199589c79Jan Clarin * 8a92623408ef72ecfb70083938eb5896199589c79Jan Clarin * http://www.apache.org/licenses/LICENSE-2.0 9a92623408ef72ecfb70083938eb5896199589c79Jan Clarin * 10a92623408ef72ecfb70083938eb5896199589c79Jan Clarin * Unless required by applicable law or agreed to in writing, software 11a92623408ef72ecfb70083938eb5896199589c79Jan Clarin * distributed under the License is distributed on an "AS IS" BASIS, 12a92623408ef72ecfb70083938eb5896199589c79Jan Clarin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a92623408ef72ecfb70083938eb5896199589c79Jan Clarin * See the License for the specific language governing permissions and 14a92623408ef72ecfb70083938eb5896199589c79Jan Clarin * limitations under the License. 15a92623408ef72ecfb70083938eb5896199589c79Jan Clarin */ 16a92623408ef72ecfb70083938eb5896199589c79Jan Clarin 17564e43098c323d1a90be53c190b8fdbdde973505Sumir Katariapackage androidx.work.impl.background.systemalarm; 18a92623408ef72ecfb70083938eb5896199589c79Jan Clarin 19dd3c04c8aa64eb9c8d3da1bbac6024e613d39143Rahul Ravikumarimport android.app.Service; 20ea55183d5b0bb706e6e962605cd820e5b3a02c28Xyan Bhatnagarimport android.arch.lifecycle.LifecycleService; 21a92623408ef72ecfb70083938eb5896199589c79Jan Clarinimport android.content.Intent; 22dd3c04c8aa64eb9c8d3da1bbac6024e613d39143Rahul Ravikumarimport android.support.annotation.MainThread; 23a92623408ef72ecfb70083938eb5896199589c79Jan Clarinimport android.support.annotation.RestrictTo; 24697d6a4a3797bc71d0dd8685937a318e9934066bRahul Ravikumarimport android.util.Log; 25564e43098c323d1a90be53c190b8fdbdde973505Sumir Kataria 26a92623408ef72ecfb70083938eb5896199589c79Jan Clarin/** 27a92623408ef72ecfb70083938eb5896199589c79Jan Clarin * Service invoked by {@link android.app.AlarmManager} to run work tasks. 28a92623408ef72ecfb70083938eb5896199589c79Jan Clarin * 29a92623408ef72ecfb70083938eb5896199589c79Jan Clarin * @hide 30a92623408ef72ecfb70083938eb5896199589c79Jan Clarin */ 31a92623408ef72ecfb70083938eb5896199589c79Jan Clarin@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) 32dd3c04c8aa64eb9c8d3da1bbac6024e613d39143Rahul Ravikumarpublic class SystemAlarmService extends LifecycleService 33dd3c04c8aa64eb9c8d3da1bbac6024e613d39143Rahul Ravikumar implements SystemAlarmDispatcher.CommandsCompletedListener { 34a7ef49dfd297780b8298b4534c291bcd89b9ca82Xyan Bhatnagar 35a92623408ef72ecfb70083938eb5896199589c79Jan Clarin private static final String TAG = "SystemAlarmService"; 36dd3c04c8aa64eb9c8d3da1bbac6024e613d39143Rahul Ravikumar 37dd3c04c8aa64eb9c8d3da1bbac6024e613d39143Rahul Ravikumar private SystemAlarmDispatcher mDispatcher; 38a92623408ef72ecfb70083938eb5896199589c79Jan Clarin 39a92623408ef72ecfb70083938eb5896199589c79Jan Clarin @Override 40a92623408ef72ecfb70083938eb5896199589c79Jan Clarin public void onCreate() { 41a92623408ef72ecfb70083938eb5896199589c79Jan Clarin super.onCreate(); 42dd3c04c8aa64eb9c8d3da1bbac6024e613d39143Rahul Ravikumar mDispatcher = new SystemAlarmDispatcher(this); 43a92623408ef72ecfb70083938eb5896199589c79Jan Clarin } 44a92623408ef72ecfb70083938eb5896199589c79Jan Clarin 45a92623408ef72ecfb70083938eb5896199589c79Jan Clarin @Override 46f0d52dd74b60bc0555c4dd5dd503e59d049d8599Sumir Kataria public void onDestroy() { 47f0d52dd74b60bc0555c4dd5dd503e59d049d8599Sumir Kataria super.onDestroy(); 48f0d52dd74b60bc0555c4dd5dd503e59d049d8599Sumir Kataria mDispatcher.onDestroy(); 49f0d52dd74b60bc0555c4dd5dd503e59d049d8599Sumir Kataria } 50f0d52dd74b60bc0555c4dd5dd503e59d049d8599Sumir Kataria 51f0d52dd74b60bc0555c4dd5dd503e59d049d8599Sumir Kataria @Override 52a92623408ef72ecfb70083938eb5896199589c79Jan Clarin public int onStartCommand(Intent intent, int flags, int startId) { 53ea55183d5b0bb706e6e962605cd820e5b3a02c28Xyan Bhatnagar super.onStartCommand(intent, flags, startId); 54dd3c04c8aa64eb9c8d3da1bbac6024e613d39143Rahul Ravikumar if (intent != null) { 55dd3c04c8aa64eb9c8d3da1bbac6024e613d39143Rahul Ravikumar mDispatcher.add(intent, startId); 56363a74f7a2d7d1b3e79a7ba32c118915757200c8Xyan Bhatnagar } 57dd3c04c8aa64eb9c8d3da1bbac6024e613d39143Rahul Ravikumar return Service.START_STICKY; 58363a74f7a2d7d1b3e79a7ba32c118915757200c8Xyan Bhatnagar } 59363a74f7a2d7d1b3e79a7ba32c118915757200c8Xyan Bhatnagar 60dd3c04c8aa64eb9c8d3da1bbac6024e613d39143Rahul Ravikumar @MainThread 61363a74f7a2d7d1b3e79a7ba32c118915757200c8Xyan Bhatnagar @Override 62dd3c04c8aa64eb9c8d3da1bbac6024e613d39143Rahul Ravikumar public void onAllCommandsCompleted() { 63697d6a4a3797bc71d0dd8685937a318e9934066bRahul Ravikumar Log.d(TAG, "All commands completed in dispatcher"); 64a7ef49dfd297780b8298b4534c291bcd89b9ca82Xyan Bhatnagar stopSelf(); 65a92623408ef72ecfb70083938eb5896199589c79Jan Clarin } 66a92623408ef72ecfb70083938eb5896199589c79Jan Clarin} 67