• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 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.eventlib.premade;
18 
19 import android.app.Service;
20 import android.content.ComponentName;
21 import android.content.Intent;
22 import android.content.res.Configuration;
23 import android.os.Binder;
24 import android.os.IBinder;
25 
26 import com.android.eventlib.events.services.ServiceBoundEvent;
27 import com.android.eventlib.events.services.ServiceConfigurationChangedEvent;
28 import com.android.eventlib.events.services.ServiceCreatedEvent;
29 import com.android.eventlib.events.services.ServiceDestroyedEvent;
30 import com.android.eventlib.events.services.ServiceLowMemoryEvent;
31 import com.android.eventlib.events.services.ServiceMemoryTrimmedEvent;
32 import com.android.eventlib.events.services.ServiceReboundEvent;
33 import com.android.eventlib.events.services.ServiceStartedEvent;
34 import com.android.eventlib.events.services.ServiceTaskRemovedEvent;
35 import com.android.eventlib.events.services.ServiceUnboundEvent;
36 
37 /**
38  * An {@link Service} which logs events for all lifecycle events.
39  */
40 public class EventLibService extends Service {
41 
42     private String mOverrideServiceClassName;
43     private final IBinder mBinder = new Binder();
44 
setOverrideServiceClassName(String overrideServiceClassName)45     public void setOverrideServiceClassName(String overrideServiceClassName) {
46         mOverrideServiceClassName = overrideServiceClassName;
47     }
48 
49     /**
50      * Gets the class name of this service.
51      *
52      * <p>If the class name has been overridden, that will be returned instead.
53      */
getClassName()54     public String getClassName() {
55         if (mOverrideServiceClassName != null) {
56             return mOverrideServiceClassName;
57         }
58 
59         return EventLibService.class.getName();
60     }
61 
getComponentName()62     public ComponentName getComponentName() {
63         return new ComponentName(getApplication().getPackageName(), getClassName());
64     }
65 
66     @Override
onCreate()67     public void onCreate() {
68         ServiceCreatedEvent.logger(this, getClassName()).log();
69     }
70 
71     @Override
onStartCommand(Intent intent, int flags, int startId)72     public int onStartCommand(Intent intent, int flags, int startId) {
73         ServiceStartedEvent.logger(this, getClassName(), intent, flags, startId).log();
74         return super.onStartCommand(intent, flags, startId);
75     }
76 
77     @Override
onDestroy()78     public void onDestroy() {
79         ServiceDestroyedEvent.logger(this, getClassName()).log();
80     }
81 
82     @Override
onConfigurationChanged(Configuration newConfig)83     public void onConfigurationChanged(Configuration newConfig) {
84         ServiceConfigurationChangedEvent.logger(this, getClassName(), newConfig).log();
85     }
86 
87     @Override
onLowMemory()88     public void onLowMemory() {
89         ServiceLowMemoryEvent.logger(this, getClassName()).log();
90     }
91 
92     @Override
onTrimMemory(int level)93     public void onTrimMemory(int level) {
94         ServiceMemoryTrimmedEvent.logger(this, getClassName(), level).log();
95     }
96 
97     @Override
onBind(Intent intent)98     public IBinder onBind(Intent intent) {
99         ServiceBoundEvent.logger(this, getClassName(), intent).log();
100         return mBinder;
101     }
102 
103     @Override
onUnbind(Intent intent)104     public boolean onUnbind(Intent intent) {
105         ServiceUnboundEvent.logger(this, getClassName(), intent).log();
106         return super.onUnbind(intent);
107     }
108 
109     @Override
onRebind(Intent intent)110     public void onRebind(Intent intent) {
111         ServiceReboundEvent.logger(this, getClassName(), intent).log();
112     }
113 
114     @Override
onTaskRemoved(Intent rootIntent)115     public void onTaskRemoved(Intent rootIntent) {
116         ServiceTaskRemovedEvent.logger(this, getClassName(), rootIntent).log();
117     }
118 }
119