【发布时间】:2019-01-30 09:32:06
【问题描述】:
我正在尝试构建一个执行以下操作的 Flutter 应用程序:
1) 每分钟运行一次警报管理器(即使应用程序处于后台/关闭状态)。
2) 当调用报警管理器的onReceive方法时,获取用户位置。
3) 将此位置存储在 SQL/SQF 数据库中。
基本上,我的所有代码都在工作。但是,我更喜欢使用两个不同的插件执行第 2 步和第 3 步,以创建更多的模块化。但要做到这一点,我需要有一个 FlutterView 的实例,这样我就可以从 Android 中执行“MethodChannel(flutterView, CHANNEL).invokeMethod(methods, args);”。
(在 android/Java 中,onReceive 方法)我试图从上下文中获取 FlutterView,如下所示:
private FlutterView viewFromAppContext(Context context) {
Application app = (Application) context.getApplicationContext();
if (!(app instanceof FlutterApplication)) {
Log.i(TAG, "viewFromAppContext app not a FlutterApplication");
return null;
}
FlutterApplication flutterApp = (FlutterApplication) app;
Activity activity = flutterApp.getCurrentActivity();
if (activity == null) {
Log.i(TAG, "viewFromAppContext activity is null");
return null;
}
if (!(activity instanceof FlutterActivity)) {
Log.i(TAG, "viewFromAppContext activity is not a FlutterActivity");
return null;
}
FlutterActivity flutterActivity = (FlutterActivity) activity;
return flutterActivity.getFlutterView();
}
但是,当我在应用程序处于后台时尝试执行此操作时,活动为空。
在这种情况下是否可以创建一个新的活动和/或flutterview(可以直接指向我在dart中的'setMethodCallHandler'方法)?
【问题讨论】:
标签: android flutter broadcastreceiver