diff --git a/.ci.yaml b/.ci.yaml
index 640734a..7e495601 100755
--- a/.ci.yaml
+++ b/.ci.yaml
@@ -1474,6 +1474,17 @@
       task_name: flutter_gallery__start_up
     scheduler: luci
 
+  - name: Linux_android flutter_gallery__start_up_delayed
+    recipe: devicelab/devicelab_drone
+    bringup: true
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab","android","linux"]
+      task_name: flutter_gallery__start_up_delayed
+    scheduler: luci
+
   - name: Linux_android flutter_gallery_android__compile
     recipe: devicelab/devicelab_drone
     presubmit: false
diff --git a/TESTOWNERS b/TESTOWNERS
index 7155b7f..7ce44b7 100644
--- a/TESTOWNERS
+++ b/TESTOWNERS
@@ -34,6 +34,7 @@
 /dev/devicelab/bin/tasks/flutter_gallery__image_cache_memory.dart @zanderso @flutter/engine
 /dev/devicelab/bin/tasks/flutter_gallery__memory_nav.dart @zanderso @flutter/engine
 /dev/devicelab/bin/tasks/flutter_gallery__start_up.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery__start_up_delayed.dart @dnfield @flutter/engine
 /dev/devicelab/bin/tasks/flutter_gallery__transition_perf_e2e.dart @zanderso @flutter/engine
 /dev/devicelab/bin/tasks/flutter_gallery__transition_perf_hybrid.dart @zanderso @flutter/engine
 /dev/devicelab/bin/tasks/flutter_gallery__transition_perf_with_semantics.dart @zanderso @flutter/engine
diff --git a/dev/devicelab/bin/tasks/flutter_gallery__start_up_delayed.dart b/dev/devicelab/bin/tasks/flutter_gallery__start_up_delayed.dart
new file mode 100644
index 0000000..2a6f3f7
--- /dev/null
+++ b/dev/devicelab/bin/tasks/flutter_gallery__start_up_delayed.dart
@@ -0,0 +1,12 @@
+// Copyright 2014 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter_devicelab/framework/devices.dart';
+import 'package:flutter_devicelab/framework/framework.dart';
+import 'package:flutter_devicelab/tasks/perf_tests.dart';
+
+Future<void> main() async {
+  deviceOperatingSystem = DeviceOperatingSystem.android;
+  await task(createFlutterGalleryStartupTest(target: 'lib/delayed_main.dart'));
+}
diff --git a/dev/devicelab/lib/tasks/perf_tests.dart b/dev/devicelab/lib/tasks/perf_tests.dart
index d387e76..add1b04 100644
--- a/dev/devicelab/lib/tasks/perf_tests.dart
+++ b/dev/devicelab/lib/tasks/perf_tests.dart
@@ -215,9 +215,10 @@
   ).run;
 }
 
-TaskFunction createFlutterGalleryStartupTest() {
+TaskFunction createFlutterGalleryStartupTest({String target = 'lib/main.dart'}) {
   return StartupTest(
     '${flutterDirectory.path}/dev/integration_tests/flutter_gallery',
+    target: target,
   ).run;
 }
 
@@ -502,10 +503,11 @@
 
 /// Measure application startup performance.
 class StartupTest {
-  const StartupTest(this.testDirectory, { this.reportMetrics = true });
+  const StartupTest(this.testDirectory, { this.reportMetrics = true, this.target = 'lib/main.dart' });
 
   final String testDirectory;
   final bool reportMetrics;
+  final String target;
 
   Future<TaskResult> run() async {
     return inDirectory<TaskResult>(testDirectory, () async {
@@ -522,6 +524,7 @@
             '-v',
             '--profile',
             '--target-platform=android-arm,android-arm64',
+            '--target=$target',
           ]);
           applicationBinaryPath = '$testDirectory/build/app/outputs/flutter-apk/app-profile.apk';
           break;
@@ -531,6 +534,7 @@
             '-v',
             '--profile',
             '--target-platform=android-arm',
+            '--target=$target',
           ]);
           applicationBinaryPath = '$testDirectory/build/app/outputs/flutter-apk/app-profile.apk';
           break;
@@ -540,6 +544,7 @@
             '-v',
             '--profile',
             '--target-platform=android-arm64',
+            '--target=$target',
           ]);
           applicationBinaryPath = '$testDirectory/build/app/outputs/flutter-apk/app-profile.apk';
           break;
@@ -548,6 +553,7 @@
             'ios',
              '-v',
             '--profile',
+            '--target=$target',
           ]);
           applicationBinaryPath = _findIosAppInBuildDirectory('$testDirectory/build/ios/iphoneos');
           break;
@@ -565,6 +571,7 @@
           '--verbose',
           '--profile',
           '--trace-startup',
+          '--target=$target',
           '-d',
           device.deviceId,
           if (applicationBinaryPath != null)
diff --git a/dev/integration_tests/flutter_gallery/lib/delayed_main.dart b/dev/integration_tests/flutter_gallery/lib/delayed_main.dart
new file mode 100644
index 0000000..7dc2af5
--- /dev/null
+++ b/dev/integration_tests/flutter_gallery/lib/delayed_main.dart
@@ -0,0 +1,33 @@
+// Copyright 2014 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+import 'gallery/app.dart';
+
+Object? createGarbage() {
+  final List<dynamic> garbage = <dynamic>[];
+  for (int index = 0; index < 1000; index += 1) {
+    final List<int> moreGarbage = List<int>.filled(1000, index);
+    if (index.isOdd) {
+      garbage.add(moreGarbage);
+    }
+  }
+  return garbage;
+}
+
+Future<void> main() async {
+  // Create some garbage, and simulate some delays between that could be
+  // plugin or network call related.
+  final List<dynamic> garbage = <dynamic>[];
+  for (int index = 0; index < 20; index += 1) {
+    final Object? moreGarbage = createGarbage();
+    if (index.isOdd) {
+      garbage.add(moreGarbage);
+      await Future<void>.delayed(const Duration(milliseconds: 7));
+    }
+  }
+
+  runApp(const GalleryApp());
+}
