如何从 android_alarm_manager 创建的隔离中调用 MethodChannel?
How to call MethodChannel from an isolate created by android_alarm_manager?
我尝试安排后台服务。为此,我使用了 https://pub.dev/packages/android_alarm_manager。效果不错。
对于我的示例,我尝试从我的隔离(android_alarm_manager 的回调)中获取电池电量,遵循 flutter 教程:https://flutter.dev/docs/development/platform-integration/platform-channels?tab=android-channel-java-tab.
如果我手动调用我的回调它会起作用(所以我很好地完成了 Android 部分)。如果 android_alarm_manager 调用它,我会出现以下错误:
Unhandled Exception: MissingPluginException(No implementation found for method getBatteryLevel on channel net.example.com/battery)
这很奇怪,因为从我使用 https://pub.dev/packages/flutter_downloader 下载文件的另一个隔离区,这个插件使用 MethodChannel...
这是我的 android_alarm_manager 代码:
import 'package:flutter/services.dart';
class AndroidManagerCallBack {
static Future<void> main() async {
_AndroidManagerCallBack test = _AndroidManagerCallBack();
await test.getBatteryLevel();
}
}
class _AndroidManagerCallBack {
static const platform = const MethodChannel('net.example.com/battery');
Future<void> getBatteryLevel() async {
String batteryLevel;
try {
final int result = await platform.invokeMethod('getBatteryLevel');
batteryLevel = 'Battery level at $result % .';
} on PlatformException catch (e) {
batteryLevel = "Failed to get battery level: '${e.message}'.";
}
print(batteryLevel);
}
}
我只是像这样调用回调:
AndroidAlarmManager.periodic(
Duration(seconds: 20),
0,
AndroidManagerCallBack.main(),
rescheduleOnReboot: true,
wakeup: false,
);
在 android_alarm_manager 的回调中,我可以调用使用某些 MethodChannel 的插件,但是当我尝试使用我的 MethodChannel 时,出现错误...
有人可以指导我:) ?
似乎无法通过isolate直接调用MethodChannel
但是,通过创建一个插件,我可以实现我想要的。所以解决方案是创建一个插件 :) !
我尝试安排后台服务。为此,我使用了 https://pub.dev/packages/android_alarm_manager。效果不错。
对于我的示例,我尝试从我的隔离(android_alarm_manager 的回调)中获取电池电量,遵循 flutter 教程:https://flutter.dev/docs/development/platform-integration/platform-channels?tab=android-channel-java-tab.
如果我手动调用我的回调它会起作用(所以我很好地完成了 Android 部分)。如果 android_alarm_manager 调用它,我会出现以下错误:
Unhandled Exception: MissingPluginException(No implementation found for method getBatteryLevel on channel net.example.com/battery)
这很奇怪,因为从我使用 https://pub.dev/packages/flutter_downloader 下载文件的另一个隔离区,这个插件使用 MethodChannel...
这是我的 android_alarm_manager 代码:
import 'package:flutter/services.dart';
class AndroidManagerCallBack {
static Future<void> main() async {
_AndroidManagerCallBack test = _AndroidManagerCallBack();
await test.getBatteryLevel();
}
}
class _AndroidManagerCallBack {
static const platform = const MethodChannel('net.example.com/battery');
Future<void> getBatteryLevel() async {
String batteryLevel;
try {
final int result = await platform.invokeMethod('getBatteryLevel');
batteryLevel = 'Battery level at $result % .';
} on PlatformException catch (e) {
batteryLevel = "Failed to get battery level: '${e.message}'.";
}
print(batteryLevel);
}
}
我只是像这样调用回调:
AndroidAlarmManager.periodic(
Duration(seconds: 20),
0,
AndroidManagerCallBack.main(),
rescheduleOnReboot: true,
wakeup: false,
);
在 android_alarm_manager 的回调中,我可以调用使用某些 MethodChannel 的插件,但是当我尝试使用我的 MethodChannel 时,出现错误...
有人可以指导我:) ?
似乎无法通过isolate直接调用MethodChannel
但是,通过创建一个插件,我可以实现我想要的。所以解决方案是创建一个插件 :) !