Как запустить фоновый сервис для обмена мгновенными сообщениями, используя Kurento API в Oreo?
Android Oreo выпустила множество ограничений на запуск фоновых сервисов / задач. Сервисы теперь не ведут себя как обычно в Oreo, как раньше.
Но что, если мне придется запустить службу в фоновом режиме для 24*7 для обмена мгновенными сообщениями.
Я занимаюсь разработкой приложения для обмена мгновенными сообщениями с использованием стороннего API. Для этого мне нужно будет запустить фоновый сервис, который связывается с сервером для новых сообщений.
Ниже Oreo работает нормально.
Как сделать так, чтобы система Android не убивала сервис?
Я не хочу показывать уведомление все время, пока работает мой сервис, потому что я буду запускать свой сервис в течение 24*7 для новых сообщений, так что пользовательский интерфейс будет казаться дешевым.
2 ответа
Как способ сделать это, вы должны изменить логику входящих сигналов, чтобы использовать в качестве канала для входящих сообщений push-уведомлений. Когда приложение переходит в фоновый режим, вы должны полагаться на push-уведомления с высоким приоритетом.
И после того, как вы получили толчок, вы можете выполнять все необходимые вещи.
После версии 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);
}
Надеюсь, что это поможет вам.