State.dispose()从来没有所谓的

问题描述 投票:0回答:1

我试图运行AlarmManager时的Dispose()方法被调用。但它看起来像的Dispose()不会被调用。我没有得到任何输出日志和debuger没有这个方法里面打破。当应该的Dispose()被调用。当我打的BACK / HOME按钮(的onStop()当量),或者只有当应用程序被系统杀死?我想运行AlarmManager当应用程序完全关闭。

它是做在颤振正确的方式?:

    class MyApp extends StatefulWidget {
      @override
      MyAppState createState() {
        return new MyAppState();
      }
    }

    class MyAppState extends State<MyApp> {
      MailSenderController controller = MailSenderController(...);

      @override
      void initState() {
        super.initState();
        controller.init();
      }

      @override
      void dispose() {
        log.info("Disposing MailSenderController"); // All levels, print(rec.message)
        controller.dispose();
        super.dispose();
      }

      @override
      Widget build(BuildContext context) {
        return ServicesInheritedWidget(
          controller,
          child: MaterialApp(
            title: 'Mail Sender',
            home: MyHomePage(title: 'Mail Sender'),
          ),
        );
      }
    }

    class MailSenderController {
      // (...)

      void dispose() {
        (() async {
           await sendDelayedSubscription?.cancel();
              log.info("AndroidAlarmManager sending");
              AndroidAlarmManager.periodic(_DELAY_LONG,
                                           _ALARM_MANAGER_ID,
                                           alarmManagerSendMails,
                                           rescheduleOnReboot: true);
        })();
      }
    } 
flutter dispose lifecycle
1个回答
0
投票

我不知道你可以运行任何代码后的应用程序是完全封闭的,除非你启动一个后台任务作为隔离:https://flutter.io/docs/development/packages-and-plugins/background-processes

© www.soinside.com 2019 - 2024. All rights reserved.