Как запустить фоновый сервис для обмена мгновенными сообщениями, используя Kurento API в Oreo? - PullRequest
0 голосов
/ 27 ноября 2018

В Android Oreo появилось много ограничений на запуск фоновых сервисов / задач.Сервисы в Oreo теперь ведут себя не так, как раньше.

Но что, если мне придется запускать сервис в фоновом режиме в течение 24 * 7 для мгновенного обмена сообщениями.

Я занимаюсь разработкойприложение для обмена мгновенными сообщениями с использованием kurento стороннего API .Чтобы добиться этого, мне нужно будет запустить фоновый сервис, который связывается с сервером для получения новых сообщений.

Ниже, чем Oreo, он работает нормально.

Как предотвратить, чтобы система Android не убивала сервис?.

Я не хочу показывать уведомление все время, пока мой сервис работает, потому что я буду запускать свой сервис в течение 24 * 7 для новых сообщений, так что пользовательский интерфейс будет дешевым.

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Как способ сделать это, вы должны изменить логику входящих сигналов, чтобы использовать в качестве канала для входящих сообщений push-уведомлений.Когда приложение переходит в фоновый режим, вы должны полагаться на push-уведомления с высоким приоритетом.

И после получения push вы можете выполнять все необходимые действия.

0 голосов
/ 27 ноября 2018

После версии Nougat обратный наземный сервис изменен.Если вы хотите, чтобы фоновая служба работала, вы можете сделать это, как указано в коде ниже.В IntentService вызывается метод жизненного цикла onCreate () .И в этом методе добавьте ниже код.

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

    int NOTIFICATION_ID = (int) (System.currentTimeMillis()%10000);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        startForeground(NOTIFICATION_ID, new Notification.Builder(this).build());
    }

}

И когда вы звоните в службу, позвоните в службу с помощью кода удара

  Intent intent = new Intent(context, FindNumberService.class);
    intent.putExtras(bundle);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        context.startForegroundService(intent);
    }
    else {
        context.startService(intent);
    }

Надеюсь, это поможет вам.

...