I am running foreground services in my app and I need to deremine if they running in my activity. From my searches I found that this is the option:
private fun isMyServiceRunning(serviceClass: Class<*>): Boolean {
val manager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
for (service in manager.getRunningServices(Int.MAX_VALUE)) {
if (serviceClass.name == service.service.className) {
return true
}
}
return false
}
but:
getRunningServices(Int): is deprecated.
So I am using one of 3 ways.
What is the most correct way to check if service is running?
Create a static boolean in the Service itself. In onCreate make it true; In onDestroy() make it false;
public class ActivityService extends Service {
public static boolean IS_ACTIVITY_RUNNING = false;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
IS_ACTIVITY_RUNNING = true;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(!IS_ACTIVITY_RUNNING)
stopSelf();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
IS_ACTIVITY_RUNNING = false;
}}
Now, You can check whether your activiy is running trough boolean ActivityService.IS_ACTIVITY_RUNNING