Я хочу знать, будет ли работать следующий метод или нет, у меня есть этот метод в самом переполнении стека, но, похоже, он не работает.
private boolean isMyServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
У меня есть служба заданий, который будет выполняться каждые 15 минут для этого, я использую планировщик заданий для запуска службы с указанным временем.У меня есть метод executeService () следующим образом:
public JobScheduler initJob(Context context){
if(jobScheduler == null){
jobScheduler = (JobScheduler)context.getSystemService(JOB_SCHEDULER_SERVICE);
}
return jobScheduler;
}
public void executeService(){
initJob(this);
ComponentName jobService = new ComponentName(this.getPackageName(), OfflineService.class.getName());
JobInfo jobInfo = new JobInfo.Builder(2,jobService).
setPersisted(true).
setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).
setPeriodic(millisecondsQueue).
build();
int jobId = jobScheduler.schedule(jobInfo);
}
Теперь этот executeService () вызывается каждый раз, когда пользователь попадает в MainActivity, onResume of MainActivity Я поставил проверку, как показано ниже
if(!isMyServiceRunning(OfflineService.class)){
executeService();
}
Если мой сервис уже запущен, то после того, как я вернусь в MainActivity, метод isMyServiceRunning()
всегда возвращает false.
Я прошел через все вопросы-ответы, связанные с этим, но в итоге оказалсяПишу этот вопрос еще раз. Я использую Android OS Nougat. Любая помощь будет отличной.