Я пытался запланировать фоновое обслуживание. Для этого я использовал 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 я могу вызывать плагины, которые использовали какой-то MethodChannel, но когда я попробовал с моим MethodChannel, у меня возникли ошибки ...
Кто-нибудь может направить меня :)?