Наши команды обсуждают, следует ли передавать параметр WeakReference<View>
в метод ViewModel
или нет. Я вижу в документе Google сказал,
Примечание. Поскольку ViewModel переживает конкретные действия и экземпляры фрагментов, он никогда не должен ссылаться на View или любой класс, который может содержать ссылку на контекст действия. Если ViewModel нужен контекст приложения (например, для поиска системной службы), он может расширить класс AndroidViewModel и иметь конструктор, который получает приложение в конструкторе (поскольку класс приложения расширяет контекст).
Как насчет того, чтобы использовать WeakReference<View>
для передачи view в viewmodel? WeakRef может предотвратить утечку памяти, однако некоторые участники сказали, что это затруднит чтение / поддержку кода. Некоторые ребята предлагают использовать интерфейс ViewInf, а View будет реализован для ViewInf, и использование метода в viewmodel будет таким.
fun methodA(viewInf: WeakReference<ViewInf>)() {
doSomeBackgroundThread(viewInf)
}
Мы хотим использовать это представление для рисования на растровом изображении и использовать растровое изображение для сохранения в memcache.