SystemChannels.lifecycle.setMessageHandler замораживает мое приложение в режиме выпуска - PullRequest
0 голосов
/ 02 августа 2020

Я использую SystemChannels.lifecycle для отслеживания возобновления работы моего приложения.

Мой код работал нормально, когда я нахожусь в режиме отладки. Но когда я переключился в режим выпуска, приложение просто загрузилось на белый экран и зависло.

Оскорбительный код выглядит следующим образом ...

SystemChannels.lifecycle.setMessageHandler((String msg) async {
    return "";
});

Если я раскомментирую этот код, мой приложение работает нормально в выпуске. Если я добавлю его обратно, приложение не будет работать, а загрузится только на белый экран, а пользовательский интерфейс не загрузится.

Для большей информации, вот код в моем main.dart ...

void main() {

    TimeServer.instance.update();

    final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<NavigatorState>();

    runZonedGuarded(() {
        runApp(MyApp(navigatorKey));
        },
        Log.onError
    );

    SystemChannels.lifecycle.setMessageHandler((String msg) async {
        return "";
    });
}

class MyApp extends StatelessWidget {

    final GlobalKey<NavigatorState> navigatorKey;

    MyApp(this.navigatorKey);

    @override
    Widget build(BuildContext context) {
        return OverlaySupport(
          child:  MaterialApp(
                title: 'Flutter Demo',
                theme: ThemeData(
                    primarySwatch: Colors.blue,
                ),
                navigatorKey: navigatorKey,
                onGenerateRoute: NavBoss.generateRoutes
            ),
        );
    }
}

Когда я запускаю приложение в режиме отладки, оно отлично работает везде. Когда я запускаю приложение на своем Moto g5, оно дает сбой в 100% случаев. Когда я запускаю приложение на своем эмуляторе Nexus 6p android 28, оно дает случайный сбой примерно в 25% случаев.

...