Fix: Entfernt Dauer-Loop
This commit is contained in:
@@ -6,6 +6,7 @@ import 'package:flutter/services.dart';
|
||||
import 'package:workmanager/workmanager.dart';
|
||||
|
||||
import '../Tasks/generate_transactions_task.dart';
|
||||
import '../Tasks/task.dart';
|
||||
import 'port_controller.dart';
|
||||
|
||||
/// Erstellt Hintergrundtasks und führt diese aus
|
||||
@@ -25,24 +26,35 @@ class BackgroundTaskController {
|
||||
} else {
|
||||
unawaited(
|
||||
Isolate.run(() async {
|
||||
sleep(const Duration(minutes: 1));
|
||||
|
||||
while (true) {
|
||||
final RootIsolateToken? rootIsolateToken = await PortController()
|
||||
.getRootIsolateToken();
|
||||
|
||||
if (rootIsolateToken != null) {
|
||||
BackgroundIsolateBinaryMessenger.ensureInitialized(
|
||||
rootIsolateToken,
|
||||
);
|
||||
await GenerateTransactionsTask().execute();
|
||||
}
|
||||
sleep(const Duration(minutes: 30));
|
||||
}
|
||||
await _runTask(
|
||||
GenerateTransactionsTask(),
|
||||
const Duration(minutes: 1),
|
||||
const Duration(minutes: 30),
|
||||
);
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _runTask(
|
||||
final Task task,
|
||||
final Duration initialDelay,
|
||||
final Duration frequency,
|
||||
) async {
|
||||
sleep(initialDelay);
|
||||
|
||||
final RootIsolateToken? rootIsolateToken = await PortController()
|
||||
.getRootIsolateToken();
|
||||
|
||||
if (rootIsolateToken != null) {
|
||||
BackgroundIsolateBinaryMessenger.ensureInitialized(rootIsolateToken);
|
||||
await GenerateTransactionsTask().execute();
|
||||
}
|
||||
|
||||
sleep(frequency);
|
||||
|
||||
unawaited(_runTask(task, initialDelay, frequency));
|
||||
}
|
||||
}
|
||||
|
||||
/// Die Funktion wird von Hintergrundtasks ausgerufen, um diese auszuführen
|
||||
|
||||
Reference in New Issue
Block a user