При создании библиотеки Android, какой шаблон можно использовать для поддержки настроенного обратного вызова в Activity

1

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

Библиотека запускает Activity, эта деятельность имеет несколько классов обслуживания, которые указывают на мой https API. (упрощенное, но, надеюсь, это достаточно подробно)

То, что я хочу предоставить, - это способ для моих пользователей передать обратный вызов, который генерирует токен аутентификации для API, позволяя им генерировать его самостоятельно. Возможно, интерфейс может выглядеть как String getAuthToken().

Но как я могу сделать это без потери состояния в какой-то момент? Я начал с Singleton, когда библиотека запускается (она запускает Intent для основной активности библиотеки), но когда процесс завершается, и вы пытаетесь вернуться к нему, то, конечно, приложение вылетает, синглтон был настроен до деятельность началась.

Я пропускаю какой-то очевидный паттерн в Java или Android, который решает эту проблему?

Теги:
callback
android-activity
singleton

1 ответ

0

Зачем вам нужен активный контекст в синглтоне? Это выглядит как плохой дизайн для начала. Вам не нужно это делать для сетевых запросов.

Когда вы представляете действие, вы берете под контроль все жизненные циклы, которые оно включает. Да, андроид воссоздает его, когда вы поворачиваете экран, и это огромная боль в заднице, но для этого вы можете использовать ViewModels:

Изображение 174551

  • 0
    Эй, я никогда не говорил, что моему Синглтону нужен контекст. Я чувствую, что схожу с ума, потому что я явно упускаю что-то здесь, что все остальные получают. Мне нужно, чтобы мои пользователи прошли обратный вызов. Этот обратный вызов является экземпляром. Если точка входа в мою библиотеку является действием, я не могу передать его действию, верно? Это должно было бы быть разборным или сериализуемым? Как ViewModel помогает мне в этом случае?
  • 0
    В этом случае просто создайте обычный синглет, который может содержать массив или объекты, которые реализуют ваш обратный вызов. Когда придет время, просто заинтересуйтесь ими и отправьте уведомление тем, кто еще жив.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню