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

