【发布时间】:2026-02-14 23:00:02
【问题描述】:
我尝试安排后台服务。为此,我使用了https://pub.dev/packages/android_alarm_manager。效果很好。
对于我的示例,我尝试从我的隔离(android_alarm_manager 的回调)中获取颤振教程之后的电池电量: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 的回调中,我可以调用使用 somee MethodChannel 的插件,但是当我尝试使用 MethodChannel 时,我得到了错误...
有人可以指导我:) ?
【问题讨论】:
标签: android flutter flutter-plugin dart-isolates