Что означает метод of ()? Kotlin Android - PullRequest
0 голосов
/ 05 февраля 2020

Извините за глупый вопрос, но после прочтения о ViewModel я наткнулся на

randomViewModel = ViewModelProviders.of(this).get(RandomViewModel::class.java)

Я просто хочу узнать, что такое of () в целом. Это просто функция, используемая поставщиками? Или это специальный оператор?

Спасибо

Ответы [ 3 ]

2 голосов
/ 05 февраля 2020
@Deprecated
    @NonNull
    @MainThread
    public static ViewModelProvider of(@NonNull Fragment fragment) {
        return new ViewModelProvider(fragment);
    }

Как мы можем видеть, просматривая исходный код ViewModelProviders, of () в основном является функцией расширения ViewModelProvider, которая возвращает новый объект NonNull ViewModelProvider с параметром фрагмент / активность и блокирует его в MainThread. По сути, это причудливый способ написания ViewModelProvider (фрагмент) с дополнительными шагами.

Но учтите, что of () устарела, теперь вы инициализируете ViewModel следующим образом:

ViewModelProvider(requireActivity(),ViewModelFactory(Database.getDatabase(requireActivity()))).get(ViewModelClass::class.java)
1 голос
/ 05 февраля 2020

Метод of() здесь - это метод внутри класса ViewModelProviders, который просто создает объект ViewModelProvider, который сохраняет ViewModels в то время, как заданная вами область действия, например, Activity, Fragment жива.

1 голос
/ 05 февраля 2020

ViewModelProviders.of (this) .get (RandomViewModel :: class. java)

ViewModelProviders.of(this)

Это функция stati c, которая принимает текущий контекст для сохранения область видимости модели. В случае this Текущее действие будет контекстом, для которого будет сохранена область видимости ViewModel.

.get(ViewModel::class)

Это делает две вещи

  1. Если ViewModel доступна, она вернется экземпляр ViewModel.
  2. В противном случае он создаст и вернет новый экземпляр.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...