Запуск приложения в фоновом режиме с уведомлением о прогрессе - PullRequest
0 голосов
/ 05 марта 2020

Я выполняю процесс загрузки с использованием asyncTask через веб-просмотр, так что процесс загрузки будет происходить до тех пор, пока приложение не закроется. Снова, когда пользователь открывает приложение, процесс загрузки продолжается. Я попытался запустить его в backgroundService, и я запустил службу после остановки приложения. Проблема в том, что служба запускается, но когда я закрываю приложение, служба останавливается. Я также попытался отобразить уведомление во время работы службы, но при закрытии приложения служба будет убита. Я сослался на этот пост . Пожалуйста, предложите мне что-нибудь, где это решит проблему, и это должно работать, начиная с Android леденца до последней версии.

1 Ответ

1 голос
/ 05 марта 2020

Я бы предположил, что приоритетным сервисом является ответ, как в ссылке, просто дополнительной с каналом уведомления

, поэтому сначала проверьте, как запустить сервис с:

    Intent intent = new Intent(this@MainActivity, YourService::class.java);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) 
        startForegroundService(intent);
    else 
        startService(intent);

А затем из службы создайте канал уведомлений перед настройкой уведомления:

     private NotificationManager createNotificationChannel() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel serviceChannel = NotificationChannel(
                CHANNEL_ID, "NAME", NotificationManager.IMPORTANCE_DEFAULT
            );
            NotificationManager manager = getSystemService(NotificationManager::class.java);
            manager.createNotificationChannel(serviceChannel);
            return manager;
        }
        return null;
    }

наконец, после этого вызова:

Notification notification = mBuilder.build();
startForeground(1, notification);

Теперь, если уведомление будет живым, пока ваше приложение

если это не работает, напишите в зарегистрированный сервис в манифесте этого

<service
     android:name=".YourService"
     android:stopWithTask="true" />
...