По сути, это моя настроить логику инициализации фоновой службы (которая в основном настроена на использование метода onStart, упомянутого ниже):
Код: Выделить всё
Future initializeBackgroundService() async {
final service = FlutterBackgroundService();
await service.configure(
androidConfiguration: AndroidConfiguration(
onStart: onStart,
autoStart: true,
isForegroundMode: true,
notificationChannelId: 'my_foreground',
initialNotificationTitle: 'AWESOME SERVICE',
initialNotificationContent: 'Initializing',
foregroundServiceNotificationId: 888,
),
iosConfiguration: IosConfiguration(
autoStart: true,
onForeground: onStart,
onBackground: onIosBackground,
),
);
}
Код: Выделить всё
@pragma('vm:entry-point')
Future onStart(ServiceInstance service) async {
DartPluginRegistrant.ensureInitialized();
if (service is AndroidServiceInstance) {
service.on('setAsForeground').listen((event) {
service.setAsForegroundService();
});
service.on('setAsBackground').listen((event) {
service.setAsBackgroundService();
});
}
service.on('stopService').listen((event) {
service.stopSelf();
});
await activatePedometer(service);
}
Код: Выделить всё
Future activatePedometer(ServiceInstance service) async {
Stream pedometerStream = Pedometer.stepCountStream;
var subscription = pedometerStream.listen((stepCount) async {
print("STEP DATA LISTENED!!!");
}
Timer.periodic(const Duration(seconds: 1), (timer) async {
print('TIMER: ${DateTime.now()}!!!');
});
}
- Когда приложение открыто
- Когда приложение свернуто
- Когда приложение закрыто
- Когда отображается экран блокировки телефона
Но когда телефон заблокирован и экран становится черным, этот обратный вызов не запускается, даже когда пользователь предпринимает шаги. Когда пользователь использует кнопку блокировки для отображения экрана блокировки, она срабатывает снова. Я хочу иметь возможность считывать данные о шагах, даже когда телефон находится в спящем режиме (заблокирован и экран черный).
Кто-нибудь сталкивался с подобной проблемой? Могу ли я что-нибудь сделать, чтобы обратный вызов прослушивания запускался, даже когда телефон находится в спящем режиме (заблокирован и экран черный)?
Устройство: Huawei P9 Lite
ОС: Android 7.0
Мне хотелось узнать, является ли это проблемой службы приоритета, поэтому я добавил следующее:
Код: Выделить всё
Timer.periodic(const Duration(seconds: 1), (timer) async {
print('TIMER: ${DateTime.now()}!!!');
});
Я также проверил, находится ли pedometerStream (в методе activatePedometer) в режиме Pause, и он не был приостановлен. .
Подробнее здесь: https://stackoverflow.com/questions/783 ... does-not-t