Przeglądaj źródła

Perf: Do not wait for objectService init during app start

Neeraj Gupta 2 lat temu
rodzic
commit
6412f8901e

+ 3 - 3
lib/main.dart

@@ -187,9 +187,9 @@ Future<void> _init(bool isBackground, {String via = ''}) async {
     });
   }
   FeatureFlagService.instance.init();
-  if (FeatureFlagService.instance.isInternalUserOrDebugBuild()) {
-    await ObjectDetectionService.instance.init();
-  }
+
+  unawaited(ObjectDetectionService.instance.init());
+
   _logger.info("Initialization done");
 }
 

+ 5 - 0
lib/services/object_detection/object_detection_service.dart

@@ -21,6 +21,7 @@ class ObjectDetectionService {
   late IsolateUtils _isolateUtils;
 
   ObjectDetectionService._privateConstructor();
+  bool inInitiated = false;
 
   Future<void> init() async {
     _isolateUtils = IsolateUtils();
@@ -40,6 +41,7 @@ class ObjectDetectionService {
     } catch (e, s) {
       _logger.severe("Could not initialize sceneclassifier", e, s);
     }
+    inInitiated = true;
   }
 
   static ObjectDetectionService instance =
@@ -47,6 +49,9 @@ class ObjectDetectionService {
 
   Future<List<String>> predict(Uint8List bytes) async {
     try {
+      if (!inInitiated) {
+        return Future.error("ObjectDetectionService init is not completed");
+      }
       final results = <String>{};
       results.addAll(await _getObjects(bytes));
       results.addAll(await _getMobileNetResults(bytes));