Должны ли запускать дочерние службы Android также на переднем плане? - PullRequest
0 голосов
/ 01 мая 2019

В моем приложении для Android я записываю множество вещей, таких как GPS, барометрическое давление, датчики Bluetooth.Существует «супер» сервис, который запускается на переднем плане:

Intent intent = new Intent(context, DataCollectorService.class);
ContextCompat.startForegroundService(context, intent);

Сам сервис должен запускать многочисленные дочерние сервисы, такие как GPS-запись, запись с Bluetooth-датчика и тому подобное.И служба создает уведомление:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    // . . . 
    Notification notification = new NotificationCompat.Builder(this, channelId)
            // . . .
            .build();

    startForeground(NOTIFICATION_ID, notification);

    mHandler.postDelayed(this::startChildServices, 100);
    return START_STICKY;
}

private void startChildServices() {
    // . . .
    if (gpsEnabled) {
        Intent intent = new Intent(this, GpsTrackingService.class);
        bindService(intent, mGpsServiceConnection, Context.BIND_AUTO_CREATE);
        startService(intent);
    }
    if (isPressureEnabled) {
        Intent intent = new Intent(this, PressureService.class);
        bindService(intent, pressureConnection, Context.BIND_AUTO_CREATE);
        startService(intent);
    }
    // . . .
}

Все работает хорошо, но очень маленький процент пользователей сталкивается с такими сбоями:

android.app.RemoteServiceException: Context.startForegroundService ()затем не вызывал Service.startForeground ()

На самом деле, я запускаю «супер» службу на переднем плане, как вы можете видеть.

Нужно ли запускать дочерние службыи на переднем плане?

Очевидно, я не хочу, чтобы в строке состояния пользователей было 3-7 значков уведомлений.

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