Есть ли классы, объявленные в модулях koin, на которые ссылается приложение, чтобы они оставались в памяти до тех пор, пока приложение живет? - PullRequest
0 голосов
/ 27 апреля 2020

Koin предоставляет single и factory для создания экземпляров объявленных классов.

Мой коллега утверждает, что Koin создает stati c экземпляров этих классов, и на них не ссылается Application. Таким образом, они подвержены сборке мусора или теряют контроль над состоянием, когда в системе Android происходит высокое давление памяти. Поэтому лучше избегать использования Koin, если синглтон, созданный koin, занимает много памяти.

Мой вопрос:

  1. Есть ли классы, созданные koin single {}, на которые ссылается Application? Есть ли исходный код, который я должен прочитать в первую очередь, прежде чем погрузиться в исходный код koin, чтобы доказать это?
  2. Склонны ли собираемые классы, созданные koin single {}, когда происходит нехватка памяти в Android? Скажем, если этот одноэлементный экземпляр называется SdkManager, задачей которого является загрузка 3-5 сторонних библиотек.
  3. Есть ли какой-либо метод инициализации, отличный от single и factory?

1 Ответ

0 голосов
/ 27 апреля 2020

Мой коллега утверждает, что Коин создает stati c экземпляров этих классов

Неясно, что ваш коллега подразумевает под "stati c instance".

на них не ссылается приложение

На несколько синглетонов в Android ссылается подкласс Application, по крайней мере, из-за того, как я использовал бы термин "ссылка".

Так что они склонны к уборке мусора

Нет. Это сделало бы Koin или любую другую структуру инверсии зависимостей бесполезной.

или потеряло бы контроль над состоянием, когда в Android system

произошло высокое давление памяти, если " системе "(устройство?) не хватает памяти, Android завершает процессы. Это избавит от всех объектов в затронутом процессе, независимо от того, управляются они Koin или нет.

Считают ли классы, созданные koin single {}, когда давление памяти происходит в Android ?

Нет.

Существует ли какой-либо метод инициализации, кроме одиночного и заводского?

viewModel и fragment существуют для Android приложений. См. документацию koin-android .

...