如何在android中检查JobService是否正在运行?

我在我的项目中使用JobService。 它运作良好。 但有时服务停止了。 它不会再次重启。 因此,如果不运行,我正试图策划JobService。 但我不知道如何检查JobService是否已经运行。 请让我知道如何检查JobService是否正在运行。

我的职业服务class:

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public class JobService extends android.app.job.JobService { @Override public boolean onStartJob(JobParameters params) { if (NetworkHandler.getInstance().isNetworkAvailable()) { TaskHandler.getInstance().getTaskListFromServer(PreferenceManagerForPlannedRoute.getInstance().getLastSyncTime(), PreferenceManagerForPlannedRoute.getInstance().getInProgressMoveTask()); NotificationUtils.getInstance().CreateNotification(); Logger.d("Scheduler", "Working!!"); } else { Logger.d("Network", "not available"); } return false; } @Override public boolean onStopJob(JobParameters params) { Logger.d("onStopJob", "Stopped"); return true; } } 

我的Util类:

 public class JobSchedulerUtils { @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public static void scheduleJob(Context context) { ComponentName serviceComponent = new ComponentName(context, JobService.class); JobInfo.Builder builder = new JobInfo.Builder(0, serviceComponent); builder.setRequiresDeviceIdle(false); builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); builder.setPeriodic(5000); builder.setPersisted(true); JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.schedule(builder.build()); } } 

开始:

 synchronized public void startAlarmManager() { if(Build.VERSION.SDK_INT>=21) { JobSchedulerUtils.scheduleJob(Application.getInstance().getApplicationContext()); }else { Intent myIntent = new Intent(Application.getInstance(), AlarmManagerForPlannedRoute.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(Application.getInstance(), 0, myIntent, 0); AlarmManager alarmManager = (AlarmManager) Application.getInstance().getSystemService(Context.ALARM_SERVICE); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis(), Constants.TIME_DELAY_FOR_TASK_LIST_SERVICE_CALL_IN_SECONDS * 1000, pendingIntent); } } 

停止:

  synchronized private void stopAlarmManager(Activity activity) { if(Build.VERSION.SDK_INT>=21){ JobScheduler jobScheduler = (JobScheduler) Application.getInstance().getApplicationContext().getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.cancelAll(); }else { Intent myIntent = new Intent(activity, AlarmManagerForPlannedRoute.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(activity, 0, myIntent, 0); AlarmManager alarmManager = (AlarmManager) activity.getSystemService(Context.ALARM_SERVICE); alarmManager.cancel(pendingIntent); } } 

我得到了解决方案。

 public static boolean isJobServiceOn( Context context ) { JobScheduler scheduler = (JobScheduler) context.getSystemService( Context.JOB_SCHEDULER_SERVICE ) ; boolean hasBeenScheduled = false ; for ( JobInfo jobInfo : scheduler.getAllPendingJobs() ) { if ( jobInfo.getId() == JOB_ID ) { hasBeenScheduled = true ; break ; } } return hasBeenScheduled ; } 

使用此方法我们可以检查jobService是否正在运行。