Запуск Сервиса на неопределенный срок - PullRequest
0 голосов
/ 22 декабря 2018

Я перевожу свое Android-приложение на целевой Android Oreo.Я запускаю службу, которая должна работать неограниченное время для выполнения определенной задачи.

Запуск службы - это выполнение определенной задачи с согласия пользователей, конечно.

До сих пор мое приложениебыл ориентирован на Android Marshmallow, и служба работает нормально и работает нормально.

Это мой сервис

public class MyService extends Service {

    public MyService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
    }

    private void DoSomething() {
     //Some Code keep watching something.       
    }


    @Override
    public int onStartCommand (Intent intent, int flags, int startId) {

        DoSomething();

        return  Service.START_STICKY;
    }


}

И вот как я запускаю сервис из действия

startService(new Intent(getBaseContext(), MyService.class));

Теперь моя проблема в том, что, когда я нацеливаю свое приложение на Android Oreo, служба не работает и, следовательно, функция, которую я пытаюсь достичь, не работает.

Но тогда как, если мойПриложение предназначено для Android Marshmallow, все работает отлично с тем же кодом.

Может ли кто-нибудь помочь мне запустить Serice в Android-приложении на неопределенный срок, нацеленный на Android Oreo, был бы признателен?

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Для Android В последних версиях у нас есть некоторые ограничения для запуска фоновых сервисов Ограничения Android Oreo

0 голосов
/ 22 декабря 2018

В Android Oreo + фоновые сервисы строго ограничены.Для запуска вашего кода у вас есть два варианта: использовать Foreground service или использовать что-то вроде JobScheduler / WorkManager API.

Ни один из них не будет работать бесконечно, хотя иWorkManager предназначен только для отложенных задач.Это то, с чем мы не можем ничего поделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...