我有一个应用程序,我想完全重新启动时,AppLifeCycleState
是.paused
这似乎适用于android (Pixel 3 XL Api 28)
,但不适用于iOS设备。
原生iOS等价:
在我的原生iOS版本的应用程序上,我在AppDelegate中的applicationDidEnterBackground函数中运行exit(0)。
我尝试过使用WidgetBindingObserver
使MyApp有状态,并侦听状态的更改。在.paused状态下,我尝试执行exit(0)
和SystemChannels.platform.invokeMethod<void>('SystemNavigator.pop');
MyApp的内部状态
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose() {
super.dispose();
WidgetsBinding.instance.removeObserver(this);
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
switch (state) {
case AppLifecycleState.paused:
print('paused state');
SystemChannels.platform.invokeMethod<void>('SystemNavigator.pop');
//I have also tried exit(0); here.
break;
case AppLifecycleState.resumed:
print('resumed state');
break;
case AppLifecycleState.inactive:
print('inactive state');
break;
case AppLifecycleState.suspending:
print('suspending state');
break;
}
}
我希望应用程序会退出,然后再次打开会重新启动,但它根本没有退出。它只是恢复到进入暂停状态之前的位置。此行为仅适用于iOS设备。
我明白我的代码不是一个完全工作的最小示例-如果您需要我设置一个示例供人们尝试,请告诉我。
1条答案
按热度按时间v8wbuo2f1#
好了,我已经解决了这个问题,但我不是100%确定为什么以前尝试使用
exit(0)
没有工作。我已经将
didChangeAppLifecycleState
函数修改为以下内容。通过添加以下代码,该应用程序现在在Android和iOS上都存在。
如果有人能解释一下为什么只使用
exit(0)
本身不起作用,我很想更好地理解这一点。