我有一个非常不同的场景,
我正在寻找一种解决方案,如果有人试图强行关闭应用程序,我需要在关闭前清除共享引用数据。所以,如果用户回到应用程序,他们需要再次登录任何帮助都会得到通知。
谨致问候,Nikhil
在移动系统上,您通常不应该根据应用程序是否在后台被杀死而采取不同的行为。用户不应该知道应用程序的生命周期,这只是操作系统进行内存/电池管理的问题。
话虽如此。iOS本身就有生命周期挂钩(AppDelegate
的applicationWillTerminate
和Application
的AndroidonDestroy
(。但此时,你可能不希望你的应用程序有足够的时间与你的flutter/dart代码异步通信,然后再次返回,进行你要求的清理。
所以我建议好好看看你的用例。一种方法是使用WidgetsBinding.instance.addObserver
来侦听状态更改为AppLifecycleState.pause
的didChangeAppLifecycleState
,并进行清理。因此,当用户从你的应用程序切换回来时(无论应用程序是否在此期间被杀(,你都可以显示一个新的登录提示。
flutter文档中有一个关于如何添加观察者的示例。
class _AppLifecycleReactorState extends State<AppLifecycleReactor> with WidgetsBindingObserver {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
// TODO check the new state.
}