我试图运行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);
})();
}
}
我不知道你可以运行任何代码后的应用程序是完全封闭的,除非你启动一个后台任务作为隔离:https://flutter.io/docs/development/packages-and-plugins/background-processes。