Як ви можете знати в реактивній екосистемі, у нас спостерігається спостереження, яке випромінює дані, і спостерігач, який підписується (отримує повідомлення) про цю спостережувану емісію, нічого дивного в тому, як працює так званий шаблон спостерігача. Спостерігаючий щось «кричить», спостерігач отримує сповіщення про те, що спостерігач кричить щось в даний момент.
Розглядайте LiveData
як спостережуване, що дозволяє керувати спостерігачами, які перебувають у active
стані. Інакше кажучи LiveData
, це просто спостерігається, але також піклується про життєвий цикл.
Але давайте розглянемо два випадки коду, які ви запитуєте:
А) Живі дані
Б) RXJava
A) Це основна реалізація LiveData
1) Ви зазвичай інсталюєте LiveData у ViewModel для підтримки зміни орієнтації (у вас може бути LiveData, який читається лише, або MutableLiveData, який можна записати, тому ви зазвичай виставляєте його поза класом LiveData)
2) у OnCreate
методі основної діяльності (не ViewModel) ви "підписуєте" об'єкт Observer (зазвичай це метод onChanged)
3) ви запускаєте метод спостерігати для встановлення зв'язку
По-перше ViewModel
(володіє діловою логікою)
class ViewModel : ViewModel() { //Point 1
var liveData: MutableLiveData<Int> = MutableLiveData()
}
І це MainActivity
(як можна більш німий)
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val ViewModelProvider= ViewModelProviders.of(this).get(ViewModel::class.java)
ViewModelProvider.observe(this, Observer {//Points 2 and 3
//what you want to observe
})
}
}
}
Б) Це основна реалізація RXJava
1) ви оголошуєте спостерігаючим
2) ви оголошуєте спостерігача
3) ви підписалися на спостерігача з спостерігачем
Observable.just(1, 2, 3, 4, 5, 6) // Point 1
.subscribe(new Subscriber() { //Points 2 & 3
@Override
public void onCompleted() {
System.out.println("Complete!");
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Double value) {
System.out.println("onNext: " + value);
}
});
Зокрема LiveData
, використовується з компонентами архітектури Lifecycle
та, як часто ViewModel
ми бачили, (як ми вже бачили). Насправді, у LiveData
поєднанні з ViewModel дозволяє постійно оновлювати кожну зміну спостерігача в режимі реального часу, щоб події управлялися в режимі реального часу там, де це потрібно. Для використання LiveData
настійно рекомендується знати поняття життєвого циклу та відносні об'єкти LifeCycleOwner / LifeCycle , а також я б запропонував вам ознайомитись із Трансформаціями , якщо ви хочете реалізувати LiveData
реальні сценарії життя. Тут ви можете знайти деякі випадки використання із великого загального користування .
В основному завершити процесLiveData
- це спрощенийRXJava
, елегантний спосіб спостерігати за змінами в декількох компонентах, не створюючи явних так званих правил залежності між компонентами, щоб ви могли набагато простіше перевірити код і зробити його набагато більш читабельним. RXJava, дозволяє робити речі LiveData та багато іншого. Зза розширені функціональні RXJava, ви можете як використовувати LiveData для простих випадків або використовувати всю міць RXJava продовжувати використовувати компоненти Android Архітектури як ViewModel , звичайноце означаєщоRXJava
може бути набагато більш складним, просто думаює сотні операторів замість SwitchMap та Map LiveData (на даний момент).
RXJava версія 2 - це бібліотека, яка зробила революцію в об'єктно-орієнтованій парадигмі, додавши так званий функціональний спосіб управління потоком програми.