1

Тема: Oдна viewmodel дві activity

У мене є activity_1 та viewmodel до неї, у цій viewmodel відкриваю soket та налаштовую з'єднання. У activity_1 я використовую дані прийняті через це з'єднання, а також через  activity_1 я переходжу в activity_2 . У activity_2 я також хочу використовувати з'єднання яке налаштоване  у viewmodel . Питання: як зробити щоб  activity_1   та  activity_2 спільно використовували viewmodel . Буду вдячний за будь-які поради в реалізації. Дякую!

2

Re: Oдна viewmodel дві activity

Якщо питання у спільному використанні одного екземпляра ViewModel кількома  екземплярами Activity, то можемо використати механізм, як для Activity та Fragment в темі

Відміність лише в тому, що в цьому випадку, з двома екземплярами Activity , ми генеруємо дані, на які оба екземпляра Activity будуть підписані, безпосередньо в екземплярі ViewModel. Інформація буде доступна як activity_1, так і activity_2 , коли ті будуть знаходитись в foreground, і відповідно присутніми в списку спостерігачів(observers) у LiveData, куди зберігаються прийняті з мережі дані.

Подякували: andriesko1

3

Re: Oдна viewmodel дві activity

Тобто, мені треба при створені activity_2 передати через об'єкт Bundle екземпляр  ViewModel щоб був один і той самий об'єкт підключення?

4

Re: Oдна viewmodel дві activity

На жаль, ні варіант, що я описав, з попередньої теми, ні варіант через Bundle на даний час не спрацює.
За цим посиланням видно, що питання розшарення одного екземпляра ViewModel для різних Activity, Google ще не вирішував: https://issuetracker.google.com/issues/64988610 .А цьому питанню вже 18 місяців.
Як варіант, пропонується певне вирішення тут: https://github.com/googlesamples/androi … -407291032. Але, як на мене, я б краще виніс мережеві операції в репозиторій, наприклад, клас HttpRepository (який створюється в одному екземплярі), зі своїм LiveData, як це і рекомендує Google. Для кожного екземпляра Activity створив свій екземпляр ViewModel, і підключився до LiveData репозиторію як спостерігач(observer). Таким чином, екземпляри ViewModel обох Activity отримуватимуть дані паралельно.

Подякували: leofun01, andriesko2

5

Re: Oдна viewmodel дві activity

До речі. Судячи з Google I/O 2018, Google активно буде просувати архітектурний компонент Navigation https://developer.android.com/topic/lib … avigation/. На сьогодні, Google не рекомендує використовувати Activity для Master/Detail, а користуватись Fragment і, відповідно, Navigation. Тому навряд чи буде вирішувати питання спільного використання ViewModel для кількох Activity, оскільки для Fragments під одним Activity механізм відпрацьований.

Подякували: andriesko1