From 8debdfac911c9d9b3a63109836cbf6cab8c18a0a Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 4 Feb 2019 12:56:42 -0600 Subject: [PATCH] Pass startId to stopSelf --- .../org/tasks/injection/InjectingService.java | 25 +++++++++++-------- .../org/tasks/jobs/NotificationService.java | 5 +++- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/tasks/injection/InjectingService.java b/app/src/main/java/org/tasks/injection/InjectingService.java index 24b612899..cd03f2ebd 100644 --- a/app/src/main/java/org/tasks/injection/InjectingService.java +++ b/app/src/main/java/org/tasks/injection/InjectingService.java @@ -19,21 +19,22 @@ public abstract class InjectingService extends Service { public void onCreate() { super.onCreate(); - startForeground(getNotificationId(), buildNotification()); + startForeground(); + + disposables = new CompositeDisposable(); + + inject(((InjectingApplication) getApplication()).getComponent().plus(new ServiceModule())); } @Override public int onStartCommand(Intent intent, int flags, int startId) { - startForeground(getNotificationId(), buildNotification()); + startForeground(); - inject(((InjectingApplication) getApplication()).getComponent().plus(new ServiceModule())); - - disposables = - new CompositeDisposable( - Completable.fromAction(this::doWork) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(this::stopSelf)); + disposables.add( + Completable.fromAction(this::doWork) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(() -> stopSelf(startId))); return Service.START_NOT_STICKY; } @@ -47,6 +48,10 @@ public abstract class InjectingService extends Service { disposables.dispose(); } + private void startForeground() { + startForeground(getNotificationId(), buildNotification()); + } + protected abstract int getNotificationId(); protected abstract int getNotificationBody(); diff --git a/app/src/main/java/org/tasks/jobs/NotificationService.java b/app/src/main/java/org/tasks/jobs/NotificationService.java index 3b2602b03..0b7e54516 100644 --- a/app/src/main/java/org/tasks/jobs/NotificationService.java +++ b/app/src/main/java/org/tasks/jobs/NotificationService.java @@ -1,6 +1,7 @@ package org.tasks.jobs; import static com.google.common.collect.Lists.transform; +import static com.todoroo.andlib.utility.AndroidUtilities.assertNotMainThread; import android.content.Intent; import android.os.IBinder; @@ -39,7 +40,9 @@ public class NotificationService extends InjectingService { } @Override - protected void doWork() { + protected synchronized void doWork() { + assertNotMainThread(); + try { if (!preferences.isCurrentlyQuietHours()) { List overdueJobs = notificationQueue.getOverdueJobs();