检查服务是否从活动类中运行

时间:2018-12-28 13:27:00

标签: android android-service jobservice

我想知道以下方法是否有效,我已经在堆栈溢出中使用了该方法,但是它似乎不起作用。

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;
}

我有一个Job Service,为此每15分钟执行一次,因此我正在使用Job Scheduler在任何提及的时间触发该服务。 我有一个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);
}

现在,每次用户进入MainActivity时都会调用此executeService(),在MainActivity的onResume上我进行了如下检查

if(!isMyServiceRunning(OfflineService.class)){
    executeService();
}

如果我的服务已经被触发,那么在我回到MainActivity之后,方法isMyServiceRunning()总是返回false。

我已经解决了所有与此相关的问题-答案,但最终我还是在使用Android OS Nougat再次写了这个问题。任何帮助都将非常有用。

0 个答案:

没有答案