State.dispose () никогда не вызывается - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь запустить AlarmManager, когда вызывается метод dispose ().Но похоже, что dispose () никогда не вызывается.Я не получаю никаких выходных журналов, и отладчик не ломается в этом методе.Когда следует вызывать dispose ().Когда я нажимаю кнопку BACK / HOME (эквивалент onStop ()) или только когда приложение убивается системой?Я хочу запустить AlarmManager, когда приложение полностью закрыто.

Это правильный способ сделать это в Flutter?:

    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);
        })();
      }
    } 

1 Ответ

0 голосов
/ 10 февраля 2019

Я не уверен, что вы можете запустить любой код после того, как приложение полностью закроется, если только вы не запустили фоновую задачу в виде изолята: https://flutter.io/docs/development/packages-and-plugins/background-processes.

...