Выполнение функции Dart в фоновом режиме при автозапуске приложения flutter на BOOT_COMPLETED?

#java #android #kotlin #dart #flutter

#java — язык #Android #kotlin #дротик #трепетать #java #dart #flutter

Вопрос:

В моем приложении Flutter вместо того, чтобы загружать все приложение на экран, я хочу выполнить небольшую функцию Dart в фоновом режиме, как только приложение получит сообщение Автозапуск при BOOT_COMPLETED.

Приложение должно загружаться нормально, когда пользователь запускает его из лаунчера, однако, когда приложение получает сообщение Autostart on BOOT_COMPLETED, оно должно просто запустить небольшую функцию dart в фоновом режиме без фактической загрузки приложения на экране.

До сих пор я использовал код из следующего git >> https://github.com/oatpano/flutter_boot_startup

Однако этот код запустит все приложение на экране.

Я не являюсь разработчиком Android, поэтому у меня возникают проблемы с пониманием того, что именно происходит в файле манифеста.

Итак, в следующем примере я хотел бы выполнить backgroundfunction () только тогда, когда приложение получит сообщение Автозапуск при BOOT_COMPLETED

 import 'package:flutter/material.dart';

void main() {
   runApp(new MyApp());
}

void backgroundfunction(){
    print("Hello world");
}
  

Комментарии:

1. Насколько я понимаю, что репозиторий, его единственная цель — запустить действие при запуске. Так что то, что вы видите, в значительной степени ожидаемо. Почему именно вы хотите выполнить код после загрузки? Если вы хотите запускать код каждые несколько минут, возможно, плагин background_fetch мог бы быть полезен: github.com/transistorsoft/flutter_background_fetch у него есть аналогичная функция, которая допускает безголовый режим: github.com/transistorsoft/flutter_background_fetch/blob/master /…

2. @herbert спасибо за ваше время. Я могу периодически запускать код в фоновом режиме с помощью flutter_background_fetch. Пакет потрясающий, и он будет выполнять функцию, даже если приложение завершено пользователем и его больше нет в памяти. Однако, если пользователь перезагружает устройство, периодическое фоновое выполнение прекращается. Я мог бы использовать flutter_background_fetch, если бы он выполнял функцию даже после загрузки.

3. это так, смотрите мой ответ.

Ответ №1:

Вы можете использовать плагин background_fetch и убедиться, что:

  1. Вы следуете документации по безголовому режиму
  2. Включить startOnBoot: true с помощью во время настройки службы, которая будет либо использовать приемник BOOT_COMPLETED на Android < 21, либо сохраненный JobService на Android >= 21