Skip to content

Android crashes when terminated lifecycle #274

@monfadev

Description

@monfadev

Environment details

Steps to reproduce

Entry app initialize foreground then terminated the apps

Code example

  • flutter foreground code
void intialize() {
FlutterForegroundTask.init();
await FlutterForegroundTask.startService();
}
  • google navigation flutter code
    (implementation in another screen)
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:google_navigation_flutter/google_navigation_flutter.dart';

class NavigationSample extends StatefulWidget {
  const NavigationSample({super.key});

  @override
  State<NavigationSample> createState() => _NavigationSampleState();
}

class _NavigationSampleState extends State<NavigationSample> {
  GoogleNavigationViewController? _navigationViewController;
  bool _navigationSessionInitialized = false;

  @override
  void initState() {
    super.initState();
    _initializeNavigationSession();
  }

  Future<void> _initializeNavigationSession() async {
    print('_initializeNavigationSession:${GoogleMapsNavigator.simulator}');
    if (!await GoogleMapsNavigator.areTermsAccepted()) {
      await GoogleMapsNavigator.showTermsAndConditionsDialog(
        'Example title',
        'Example company',
      );
    }
    // Note: make sure user has also granted location permissions before starting navigation session.
    await GoogleMapsNavigator.initializeNavigationSession();
    setState(() {
      _navigationSessionInitialized = true;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Google Maps Navigation Sample1')),
      body: _navigationSessionInitialized
          ? GoogleMapsNavigationView(
        onViewCreated: _onViewCreated,
        initialNavigationUIEnabledPreference: NavigationUIEnabledPreference.disabled,
        // Other view initialization settings
      )
          : const Center(child: CircularProgressIndicator()),
    );
  }

  void _onViewCreated(GoogleNavigationViewController controller) {
    _navigationViewController = controller;
    controller.setMyLocationEnabled(true);
    // Additional setup can be added here.
  }

  @override
  void dispose() {
    if (_navigationSessionInitialized) {
      GoogleMapsNavigator.cleanup();
    }
    super.dispose();
  }
}

Stack trace

D/SessionLifecycleClient(20186): Data Collection is disabled for all subscribers. Skipping this Event
D/AndroidRuntime(20186): Shutting down VM
E/AndroidRuntime(20186): FATAL EXCEPTION: main
E/AndroidRuntime(20186): Process: com.dash.driver.android.stg, PID: 20186
E/AndroidRuntime(20186): java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
E/AndroidRuntime(20186): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:562)
E/AndroidRuntime(20186): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
E/AndroidRuntime(20186): Caused by: java.lang.reflect.InvocationTargetException
E/AndroidRuntime(20186): 	at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(20186): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
E/AndroidRuntime(20186): 	... 1 more
E/AndroidRuntime(20186): Caused by: com.google.maps.flutter.navigation.FlutterError: Cannot access navigation functionality before the navigation session has been initialized.
E/AndroidRuntime(20186): 	at com.google.maps.flutter.navigation.GoogleMapsNavigationSessionManager.getNavigator(GoogleMapsNavigationSessionManager.kt:151)
E/AndroidRuntime(20186): 	at com.google.maps.flutter.navigation.GoogleMapsNavigationSessionManager.unregisterListeners(GoogleMapsNavigationSessionManager.kt:285)
E/AndroidRuntime(20186): 	at com.google.maps.flutter.navigation.GoogleMapsNavigationSessionManager.onActivityDestroyed(GoogleMapsNavigationSessionManager.kt:139)
E/AndroidRuntime(20186): 	at com.google.maps.flutter.navigation.GoogleMapsNavigationPlugin.onDetachedFromActivity(GoogleMapsNavigationPlugin.kt:77)
E/AndroidRuntime(20186): 	at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.detachFromActivity(FlutterEngineConnectionRegistry.java:381)
E/AndroidRuntime(20186): 	at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onDetach(FlutterActivityAndFragmentDelegate.java:754)
E/AndroidRuntime(20186): 	at io.flutter.embedding.android.FlutterActivity.onDestroy(FlutterActivity.java:909)
E/AndroidRuntime(20186): 	at android.app.Activity.performDestroy(Activity.java:8876)
E/AndroidRuntime(20186): 	at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1491)
E/AndroidRuntime(20186): 	at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5600)
E/AndroidRuntime(20186): 	at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:5645)
E/AndroidRuntime(20186): 	at android.app.servertransaction.DestroyActivityItem.execute(DestroyActivityItem.java:47)
E/AndroidRuntime(20186): 	at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
E/AndroidRuntime(20186): 	at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:180)
E/AndroidRuntime(20186): 	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:98)
E/AndroidRuntime(20186): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)
E/AndroidRuntime(20186): 	at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime(20186): 	at android.os.Looper.loopOnce(Looper.java:205)
E/AndroidRuntime(20186): 	at android.os.Looper.loop(Looper.java:294)
E/AndroidRuntime(20186): 	at android.app.ActivityThread.main(ActivityThread.java:8177)
E/AndroidRuntime(20186): 	... 3 more
I/Process (20186): Sending signal. PID: 20186 SIG: 9
Lost connection to device.

Thanks!

Metadata

Metadata

Labels

priority: p0Highest priority. Critical issue. P0 implies highest priority.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions