【发布时间】:2019-04-04 16:07:36
【问题描述】:
我有一个使用 Flutter/Dart 作为库的 Android 应用。
当应用程序关闭时,它会继续作为服务在后台运行。 在 Android 代码(Java 中)中,我需要调用在应用程序的 Flutter 部分中编写的方法。
我该怎么做? 我发现一些帖子提到了 MethodChannel,但我只找到了 Flutter 部分从本机 (Android) 部分调用方法的示例。我想做相反的事情。
我该怎么做?
谢谢。
【问题讨论】:
我有一个使用 Flutter/Dart 作为库的 Android 应用。
当应用程序关闭时,它会继续作为服务在后台运行。 在 Android 代码(Java 中)中,我需要调用在应用程序的 Flutter 部分中编写的方法。
我该怎么做? 我发现一些帖子提到了 MethodChannel,但我只找到了 Flutter 部分从本机 (Android) 部分调用方法的示例。我想做相反的事情。
我该怎么做?
谢谢。
【问题讨论】:
在 Flutter 中,创建 MethodChannel 实例后,像这样附加一个 MethodCallHandler:
_channel.setMethodCallHandler((call){
print(call.method);
});
然后从您的 Android 代码中执行以下操作:
channel.invokeMethod("hello","any argument");
但是,当应用程序终止时,即使服务仍然存在,它也不会工作。我已经测试过了。
我认为解决这个问题的方法是使用平台上的原生数据库来存储数据,然后当应用程序加载时,flutter 代码可以调用原生主机平台来获取数据。
在 android 上它会使用 WorkManager 来安排数据的获取并将其存储在 ROOM 或 Realm 等中。
在 iOS 上,它将使用后台应用刷新来安排数据的获取并存储在 Core Data 或 Realm 中。
我认为大文件应该保存在本地代码和颤振代码都可以访问的共享文件夹中,因为来回复制数据的成本。
【讨论】: