Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 弗利特、摩尔和工作经理_Flutter_Dart Isolates_Flutter Moor - Fatal编程技术网

Flutter 弗利特、摩尔和工作经理

Flutter 弗利特、摩尔和工作经理,flutter,dart-isolates,flutter-moor,Flutter,Dart Isolates,Flutter Moor,我正在开发一个flatter应用程序(当时只针对Android,但计划稍后提供iOS支持)。该应用程序以两种方式运行: 使用大多数业务逻辑(前台隔离,从主方法开始)的颤振UI(FG) 使用android WorkManager(使用颤振背景隔离)在后台执行的一些自动任务(BG) 两个分离株都在使用数据库 因为我们需要以“线程安全”的方式使用数据库,所以我们尝试使用Moor数据库框架,通过Moor_ffi接口与SQLite服务器进行通信 摩尔声称通过产卵第三个分离物(摩尔索体)来实现它的“线程

我正在开发一个flatter应用程序(当时只针对Android,但计划稍后提供iOS支持)。该应用程序以两种方式运行:

  • 使用大多数业务逻辑(前台隔离,从主方法开始)的颤振UI(FG)
  • 使用android WorkManager(使用颤振背景隔离)在后台执行的一些自动任务(BG)
  • 两个分离株都在使用数据库
因为我们需要以“线程安全”的方式使用数据库,所以我们尝试使用Moor数据库框架,通过Moor_ffi接口与SQLite服务器进行通信

摩尔声称通过产卵第三个分离物(摩尔索体)来实现它的“线程安全”。此隔离是唯一与数据库对话的隔离。在BG和FG中执行的查询使用SendPort/ReceivePort发送到此隔离,执行并返回给调用方隔离

然而,所有摩尔人的例子都表明从FG分离物中产卵摩尔人。这引起了我对以下问题的关注

  • 如果FG隔离“死亡”,摩尔人会怎么样

    1.1如果用户通过按Navigator中最后一个屏幕上的后退按钮退出

    1.2如果应用程序在一段时间内不可见,并且操作系统决定释放其内存

    1.3如果用户在设置中“强制杀死”应用程序(理想情况下,这应该是摩尔人死亡的唯一情况)

  • 在BG isolate中,我们使用IsolateNameServer来构造MoorIsolate。我们是否有办法检测隔离是否仍在运行


  • 在与moor开发者沟通和我自己的经验测试后,我得出以下结论:

    • 如果隔离体死亡,则从其产生的所有隔离体也随之死亡。这意味着,如果MoorIsolate是从FG分离物中产生的,并且FG分离物被任何方法停止,MoorIsolate将随之死亡
    • moor_ffi为android提供线程安全版本的sqlite。这意味着可以在FG中产卵驼峰菌,并为BG分离驼峰菌(或根本没有驼峰菌)
    • IsolateNameServer是在FG和BG隔离之间传递端口的唯一方法。然而,仍然可能存在比赛条件

    那么你的意思是,我甚至不必产生摩尔人,android后端仍然是线程安全的??那整件事的意义是什么?如果是这样的话,文档是非常误导的!如果不在FG上使用Moorisole,所有查询都将阻止gui重画。