Flutter检测杀死该应用程序

我想知道是否有可能查杀该应用程序。假设在聊天应用程序中,当用户使用onWillPop离开聊天室时,我可以获得时间戳记。但是,如果用户直接从聊天室杀死了该应用程序,它将不会被解雇。那么有没有办法检测到这一点?

还是有任何建议以不同的方式获取时间戳?

回答:

另请参阅https://flutter.io/flutter-for-android/#how-do-i-listen-to-android-

activity-lifecycle-events

您可以收听不活动,已暂停和已分离的内容。这可能为时过早,但通常最好是过早且频繁地进行一些清理,而不是根本不做:

WidgetsBinding.instance.addObserver(LifecycleEventHandler(

detachedCallBack: () async => widget.appController.persistState(),

resumeCallBack: () async {

_log.finest('resume...');

}));

class LifecycleEventHandler extends WidgetsBindingObserver {

LifecycleEventHandler({this.resumeCallBack, this.detachedCallBack});

final FutureVoidCallback resumeCallBack;

final FutureVoidCallback detachedCallBack;

// @override

// Future<bool> didPopRoute()

// @override

// void didHaveMemoryPressure()

@override

Future<void> didChangeAppLifecycleState(AppLifecycleState state) async {

switch (state) {

case AppLifecycleState.inactive:

case AppLifecycleState.paused:

case AppLifecycleState.detached:

await detachedCallBack();

break;

case AppLifecycleState.resumed:

await resumeCallBack();

break;

}

_log.finest('''

=============================================================

$state

=============================================================

''');

}

// @override

// void didChangeLocale(Locale locale)

// @override

// void didChangeTextScaleFactor()

// @override

// void didChangeMetrics();

// @override

// Future<bool> didPushRoute(String route)

}

根据2019年11月4日的拉取请求,该枚举AppLifecycleState.suspending被重命名为AppLifecycleState.detached。如果您使用的Flutter版本低于1.12,则仍必须使用AppLifecycleState.suspending

以上是 Flutter检测杀死该应用程序 的全部内容, 来源链接: utcz.com/qa/432234.html

回到顶部