From b34f90e09d2a07a8154888cf28d23087578fc2d9 Mon Sep 17 00:00:00 2001 From: NekoInverter <7741672-NekoInverter@users.noreply.gitlab.com> Date: Mon, 28 Dec 2020 17:30:35 +0800 Subject: [PATCH] Fix service start in some cases --- .../ehviewer/download/DownloadService.java | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/download/DownloadService.java b/app/src/main/java/com/hippo/ehviewer/download/DownloadService.java index f20a429fc..37d916fe5 100644 --- a/app/src/main/java/com/hippo/ehviewer/download/DownloadService.java +++ b/app/src/main/java/com/hippo/ehviewer/download/DownloadService.java @@ -16,13 +16,9 @@ package com.hippo.ehviewer.download; -import android.app.NotificationChannel; -import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; -import android.content.Context; import android.content.Intent; -import android.os.Build; import android.os.Bundle; import android.os.IBinder; import android.os.SystemClock; @@ -30,7 +26,9 @@ import android.util.Log; import androidx.annotation.IntDef; import androidx.annotation.Nullable; +import androidx.core.app.NotificationChannelCompat; import androidx.core.app.NotificationCompat; +import androidx.core.app.NotificationManagerCompat; import androidx.core.content.ContextCompat; import com.hippo.ehviewer.EhApplication; @@ -79,7 +77,7 @@ public class DownloadService extends Service implements DownloadManager.Download private static int sFinishedCount; private static int sDownloadedCount; @Nullable - private NotificationManager mNotifyManager; + private NotificationManagerCompat mNotifyManager; @Nullable private DownloadManager mDownloadManager; private NotificationCompat.Builder mDownloadingBuilder; @@ -103,13 +101,22 @@ public class DownloadService extends Service implements DownloadManager.Download super.onCreate(); CHANNEL_ID = getPackageName() + ".download"; - mNotifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && mNotifyManager != null) { - mNotifyManager.createNotificationChannel(new NotificationChannel(CHANNEL_ID, getString(R.string.download_service), - NotificationManager.IMPORTANCE_LOW)); - } + mNotifyManager = NotificationManagerCompat.from(this); + mNotifyManager.createNotificationChannel( + new NotificationChannelCompat.Builder(CHANNEL_ID, NotificationManagerCompat.IMPORTANCE_LOW) + .setName(getString(R.string.download_service)) + .build()); mDownloadManager = EhApplication.getDownloadManager(getApplicationContext()); mDownloadManager.setDownloadListener(this); + + ensureDownloadingBuilder(); + + mDownloadingBuilder.setContentTitle(getString(R.string.download_service)) + .setContentText(null) + .setSubText(null) + .setProgress(0, 0, true); + + startForeground(ID_DOWNLOADING, mDownloadingBuilder.build()); } @Override @@ -477,7 +484,7 @@ public class DownloadService extends Service implements DownloadManager.Download private static final int OPS_CANCEL = 1; private static final int OPS_START_FOREGROUND = 2; private static final long DELAY = 1000; // 1s - private final NotificationManager mNotifyManager; + private final NotificationManagerCompat mNotifyManager; private final NotificationCompat.Builder mBuilder; private final int mId; private Service mService; @@ -487,7 +494,7 @@ public class DownloadService extends Service implements DownloadManager.Download @Ops private int mOps; - public NotificationDelay(Service service, NotificationManager notifyManager, + public NotificationDelay(Service service, NotificationManagerCompat notifyManager, NotificationCompat.Builder builder, int id) { mService = service; mNotifyManager = notifyManager;