FireBaseJobDispatcher onStopJob не запускается
Я запускаю работу, когда произошел исходящий звонок или входящий звонок
Bundle bundle = new Bundle();
bundle.putString("MobileNumber", number);
bundle.putString("CallStatus", "OUT");
FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(ctx));
Job myJob = dispatcher.newJobBuilder()
.setService(FirebaseRecordingService.class) // the JobService that will be called
.setTag("my-unique-tag1") // uniquely identifies the job
.setExtras(bundle)
.build();
dispatcher.mustSchedule(myJob);
На этот раз onStartJob выполняется. Теперь я прекращаю работу после завершения вызова.
FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(ctx));
dispatcher.cancel("my-unique-tag1");
Но на этот раз стоп-джоб не выполнен. Может кто-нибудь, пожалуйста, скажите мне, где я делаю неправильно.
1 ответ
Попробуйте это решение для вашей проблемы
Когда вы начинаете работу, просто проверьте, если FirebaseRecordingService.Class
класс обслуживания запущен или нет с помощью этого метода
private boolean isMyServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
ваш код выглядит так
if (isMyServiceRunning(context_here)) {
System.out.println("service already started stopping now");
stopService(new Intent(context_here, FirebaseRecordingService.class));
}
Bundle bundle = new Bundle();
bundle.putString("MobileNumber", number);
bundle.putString("CallStatus", "OUT");
FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(ctx));
Job myJob = dispatcher.newJobBuilder()
.setService(FirebaseRecordingService.class) // the JobService that will be called
.setTag("my-unique-tag1") // uniquely identifies the job
.setExtras(bundle)
.build();
dispatcher.mustSchedule(myJob);
Затем, когда работа выполняется, чтобы остановить службу, которая является заданием на основе firebase.
Сделай это
if (isMyServiceRunning(context_here)) {
System.out.println("service already started stopping now");
stopService(new Intent(context_here,FirebaseRecordingService.class));
}
И не называйте это
FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(ctx));
это создаст другой объект класса FirebaseJobDispatcher. Используйте объявленный объект, который используется для запуска службы заданий.
dispatcher.cancel("my-unique-tag1");
Или вы можете позвонить, если одновременно работает только одна служба
dispatcher.cancelAll();