Немедленно выполните фоновый код, мое приложение будет полностью закрыто и больше никогда

# #android #firebase #flutter #dart #google-cloud-functions

Вопрос:

Я внедряю функцию онлайн/оффлайн в приложении для голосовых вызовов моей группы. я хочу удалить пользователей из списка активных пользователей, когда они нажимают меню(чтобы открыть все открытые приложения на устройстве), и смахнуть мое приложение. Так что там я мог бы запустить функцию firebase для удаления. Прямо сейчас я могу работать только на willpop и когда приложение находится в фоновом режиме.

Ответ №1:

Попробуйте написать этот код в методе dispose.

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

1. Я написал коды. Они выполняются, когда страница закрыта, а не когда приложение закрыто.

Ответ №2:

Вы должны использовать «didChangeAppLifecycleState«.

 class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
  @override
  void initState() {
    super.initState();
    // add the observer
    WidgetsBinding.instance.addObserver(this);
  }

  @override
  void dispose() {
    // remove the observer
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    super.didChangeAppLifecycleState(state);

    // These are the callbacks
    switch (state) {
      case AppLifecycleState.resumed:
        // widget is resumed
        break;
      case AppLifecycleState.inactive:
        // widget is inactive
        break;
      case AppLifecycleState.paused:
        // widget is paused
        break;
      case AppLifecycleState.detached:
        // widget is detached
        break;
    }
  }

  @override
  Widget build(BuildContext context) => Scaffold();
}
 

Всегда неактивен пользователь в AppLifecycleState.приостановлен
и снова активен пользователь в AppLifecycleState.возобновлен

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

1. спасибо тебе, самин. Когда мой пользователь использует приложение в фоновом режиме, оно все еще активно, потому что может слышать звук/и может говорить также с помощью микрофона. Это отлично работает. Но я хочу определить, когда, пока мой находится в фоновом режиме. Пользователь удаляет все запущенные приложения. Чтобы я мог удалить пользователя из активных.

2. Затем сделайте это в AppLifecycleState.отдельно. Проверьте жизненный цикл как свой собственный и определите, куда вы должны поместить логин. Трудно проверить, было ли приложение убито, смахнув с последнего экрана убитого ОС. Поэтому реализуйте это, проверьте, какой метод вызывает какую операцию и код соответственно.