Flutter 检测杀死应用程序

2024-01-01

我想知道是否可以检测杀死该应用程序。 假设在聊天应用程序中,我能够使用 onWillPop 获取用户离开聊天室时的时间戳。 但是,如果用户直接从聊天室终止该应用程序,则该应用程序不会被启动。那么有没有办法检测到呢?
或者有什么建议以不同的方式获取时间戳?


也可以看看https://flutter.io/flutter-for-android/#how-do-i-listen-to-android-activity-lifecycle-events 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)
}

Edit

有了这个拉取请求 https://github.com/flutter/engine/pull/119132019 年 11 月 4 日,枚举AppLifecycleState.suspending被重命名为AppLifecycleState.detached。如果您使用的是 1.12 之前版本的 Flutter,则仍然必须使用AppLifecycleState.suspending.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter 检测杀死应用程序 的相关文章

随机推荐

  • 基于 GWT Servlet 的通知(服务器事件总线)

    谁能想到一个好方法让服务器根据服务器处理情况通知客户端 例如 考虑以下事件 用户请求删除数据 但是由于其运行时间较长 我们将其放入队列中 客户收到 是的 我们成功完成了您的交易 服务器删除该项目 现在想要更新任何客户端可能正在使用的任何本地
  • Emacs 设置哪个功能模式

    我希望在打开 Emacs 时默认启用哪个功能模式 我已将以下行添加到我的 emacs 文件中 setq which func mode t setq which function mode t 当我打开 cpp 文件并导航到函数主体时 我没
  • 数据集不适合内存

    我有一个MNIST像不适合内存的数据集 进程内存 not gpu记忆 我的数据集是 4GB 这不是一个TFLearn issue 据我所知model fit需要一个array for x and y TFLearn 示例 model fit
  • 编译时的模板和 constexpr 推导取决于编译器和优化标志

    以下问题是从更大的代码浓缩而来的 因此 有些表达式看似多余或不必要 但对原始代码至关重要 考虑有一个结构体 其中包含编译时常量和一个简单的容器类 template
  • 哪些 Ruby gem 支持 Facebook API?

    我有一个使用 Facebook API 的 Rails 应用程序 我见过几种不同的用于与 Facebook 集成的 Ruby gem 但它们看起来已经过时了 最好自己编写低级调用吗 有没有合适且当前的宝石可用 这些宝石最近有变化吗 我正在开
  • Puppeteer - 无限滚动的情况

    我想继续向下滚动 直到所有具有特定类名的元素都加载到动态 HTML 环境中 这是我使用的代码 while await page xj7 length lt counter await page evaluate gt window scro
  • JPA持久化后如何从数据库获取值

    如何获取保存到数据库后的值 entityManager persist 在调用 persist 之后 我能够从数据库获取主键值 而不是任何其他值 例如 public void create Project project entityMan
  • GroupBy 查询和位字段

    我正在使用实体框架核心 2 1 我有一个数据库上下文 其中包含一个模型的访问器 该模型包含一个布尔字段 该字段在 MS SQL 数据库中表示为不可为空的位字段 我想构建一个在 SQL 中高效计算的查询 该查询为我提供表中所有行以及启用了位列
  • 公开 WCF 服务以便可以轻松地从 Java/CXF 使用它的最佳方法是什么?

    我们编写了一个供 Java 商店使用的 WCF 服务 该商店使用 CXF 生成适配器 我们对 Java 不太熟悉 但已经使用 basicHttpBinding SSL 和基本身份验证公开了该服务 集成测试表明 NET 客户端可以很好地使用该
  • 如何在不使用Eclipse的情况下添加带有资源的Android库

    我想设置 Android v7 appcompat 库以便使用 ActionBar 在 http developer android com tools support library setup html http developer a
  • 有没有办法将 pyspark 数据帧写入 redis 的 azure 缓存?

    我有一个包含 2 列的 pyspark 数据框 我为 Redis 实例创建了一个天蓝色缓存 我想将 pyspark 数据帧写入 redis 其中数据帧的第一列作为键 第二列作为值 我怎样才能在天蓝色中做到这一点 您需要利用这个库 https
  • 使用嵌入式 jetty 服务器运行 Web 应用程序 (WAR)

    我制作了一个非常基本的 Web 应用程序 只有一个 html 页面 我把它作为战争输出了 现在我创建了一个嵌入式码头服务器 public class SimplestServer public static void main String
  • Ruby/Rails - Shrine::Error(存储:缓存未在 PdfUploader 上注册)

    我一直在努力弄清楚为什么我在 Heroku 上收到此错误 Shrine Error storage cache isn t registered on PdfUploader 初始化器 rb require shrine require s
  • Mysql 从 enum 到tinyint 问题

    我有一张桌子 terms of payment enum 0 1 NOT NULL DEFAULT 0 COMMENT I run ALTER TABLE customer CHANGE terms of payment terms of
  • 如何检测是否从儿童活动中回来?

    如何检测在按子活动的后退按钮后活动是否获得焦点 以及当时如何执行一些代码 一种可能性是开始您的孩子活动startActivityForResult http developer android com reference android a
  • TGLAugmentedRealityView 类似 Android 的库吗? (相机预览上的位置)

    所以我想为 Android 使用一个非常相似的库 就像TGL增强现实视图 https github com gleue TGLAugmentedRealityView It s 根据您和目标的位置将视图弹出到相机预览中 我几乎找不到任何对
  • 删除邮政编码中的 -####

    如何在Python中从邮政编码中删除 4 我有这样的数据 85001 52804 3233 Winston Salem 我希望它成为 85001 52804 Winston Salem gt gt gt zip 52804 3233 gt
  • 为什么与 SqlCommand 一起使用时某些 sql 查询会慢很多?

    我有一个存储过程 它从 Sql Server Management Studio 执行的速度比使用以下命令运行时快得多 2 秒 System Data SqlClient SqlCommand 2 分钟后超时 这可能是什么原因 细节 在 S
  • 黑莓输入流到字符串的转换

    如何在 BlackBerry 上将 InputStream 转换为字符串 对于最少的代码来说怎么样 String str new String IOUtilities streamToBytes is UTF 8
  • Flutter 检测杀死应用程序

    我想知道是否可以检测杀死该应用程序 假设在聊天应用程序中 我能够使用 onWillPop 获取用户离开聊天室时的时间戳 但是 如果用户直接从聊天室终止该应用程序 则该应用程序不会被启动 那么有没有办法检测到呢 或者有什么建议以不同的方式获取