Закрыть
×
=0) { let js = text.slice(pos1, pos2); + '<\/' + "script" + '>'; arrText.push(js); // next pos1 = pos2; continue; } } } break; } return arrText; } function OpenDialog(parentDiv, urlContent) { parentDiv = document.getElementById('modal-background'); // new !!!!!!! parentDiv.appendChild(document.getElementById('modal-template')); document.getElementById('modal-background').style.display = "flex"; // !!!!! block document.getElementById('modal-template').style.display = "flex"; // !!!!! document.getElementById('modal-body').innerHTML = ""; post_url(urlContent, "", function(text_from_server) { var element = document.getElementById('modal-body'); element.innerHTML = text_from_server; // add scripts var arrJSText = get_scripts(text_from_server); for (var i=0; i
dir.by
Праздники ...
Праздники ...
День Октябрьской революции (7 Ноября)
Концерты, выставки ...
Концерты, выставки ...
Спектакль "Особо опасные пенсионеры"|||г. Минск 6 сентября, 21 октября, 17 ноября 2026
Афишу
Спорт занятия ...
Спорт занятия ...
Танцы для детей с 2-х до 18 лет (современная хореография, уличные танцы, акробатика, брейкданс, Go-Go, ...)
Спорт занятие
Компьютер, программы...
Компьютер, программы...
Объявления ...
Объявления ...
Как добавить подписчиков в близкие друзья для инстаграм
Объявление
Новости ...
Новости ...
Форум ...
Форум ...
обсуждение...
Поиск
Концерты
Спорт
Форум
Компьютер
Компьютер, программы
→
Kotlin
flow - это поток данных в Kotlin. Это замена LiveData в Android Kotlin и замена Observable в RxJava
посмотрели
809
раз
обновлено: 2 августа 2026
flow
это асинхронный поток данных.
flow
другими словами это асинхронная функция которая выпускает данные.
flow
это альтернатива стандартным коллекциям(спискам, массивам)
flow
может использоваться только в корутинах
Пример
Kotlin
fun
main
() {
// функция
flow
описывает поток без запуска
val myflow1 =
flow
{
emit(5)
// поток выпускает значение
emit(3)
// поток выпускает значение
emit(9)
// поток выпускает значение
}
// функция
collect
запускает поток
myflow1.
collect
{ value ->
// получаем данные из потока
println( value)
}
}
Что такое
flow
в книге?
flow
это реализация паттерна
наблюдатель
. У вас есть источник данных и подписчик, и
flow
как раз реализует источник данных.
flow
это новая часть
корутин
, представленная компанией
JetBrains
и призванная сделать
корутины
более реактивным фреймворком, заменив собой
Rx
и
LiveData
. Интересно, что когда придумали
корутины
, то преимущества
корутин
было: удобное использование и синхронная работа. То есть можно вычислять все данные прямо там, где они нужны и не нужны колбэки.
Но! После долгой работы с
корутинами
выяснилось, что реактивность все-таки иногда нужна, а подходящего решения не было и придумали
flow
.
Существует несколько библиотек и фреймворков, которые предоставляют аналогичные возможности для работы с асинхронными потоками данных:
Shared Flow
Shared Flow
хранит в себе кэш, из которого достаются данные когда на них будет подписан коллектор.
Представьте, вы находитесь в приложении по подбору авто на продажу. Пока пользователь свернул приложение у вас сгенерировалось несколько новых вариантов, а когда пользователь открыл приложение, вы сможете отобразить ему варианты.
Причем, используя параметры, вы можете отсеивать события, дропать первые или последние и так далее. Если
shared flow
переполнится, то он приостановит эмиттеры до тех пор, пока их не обработает, но при этом он не дожидается обработки их коллекторами. То есть у вас получается очень быстрая шина данных внутри вашего приложения.
MutableSharedFlow
MutableSharedFlow
позволяет получать данные одновременно из suspend источников и из non-suspend источников.
Ещё в
MutableSharedFlow
можно сбросить кэш при необходимости.
StateFlow
StateFlow
хранит последнее значение из источника данных.
Если к нам приходило три значения 5, 20, и 14, а значение 14 было последним, то, при подписке на
StateFlow
мы получим значение 14.
Старые аналоги flow
RxJava
(Observables, Observers)
RxJava
это библиотека для реактивного программирования на
Java
, но также доступна для
Kotlin
. Она предоставляет
Observables
и
Observers
для работы с асинхронными потоками данных.
RxJava
имеет множество операторов для преобразования, фильтрации и объединения потоков данных.
RxJava
(Flowable)
В
RxJava, Flowable
представляет собой более расширенный вариант
Observable
, который предназначен для работы с потоками данных, где может быть много элементов и потребители могут не успевать обрабатывать данные настолько быстро, насколько они поступают. Это решает проблему переполнения буфера в асинхронных потоках данных.
Project Reactor
Project Reactor
это библиотека для реактивного программирования на языке
Java
, которая также имеет адаптеры для
Kotlin
. Она предоставляет
Flux
и
Mono
для работы с асинхронными данными и также включает в себя множество операторов для манипуляции данными.
LiveData
LiveData
это часть
Android Architecture Components
, предназначенная для работы с
Android
компонентами. Она обеспечивает наблюдение за изменением данных и автоматически обновляет пользовательский интерфейс при изменении данных.
Reactive Streams
Reactive Streams
это стандарт Java, предназначенный для работы с асинхронными потоками данных. Он определяет интерфейсы
Publisher
,
Subscriber
и
Subscription
, которые могут быть реализованы различными библиотеками, такими как
RxJava
,
Project Reactor
и другими.
← Предыдущая тема
Общий, template class в Kotlin | Пример: class MyBook[<]T[>] { ... }
Следующая тема →
Консольное Kotlin приложение работает как Android Jetpack Compose
Ваши Отзывы ... комментарии ...
Вашe имя
Ваш комментарий
(www ссылки может добавлять только залогиненный пользователь)
+ картинку
Объявления
Объявления
•
Что такое Kotlin ?
•
Почему самой популярной средой разработки для Kotlin является IntelliJ IDEA?
•
Скачать и установить IntelliJ IDEA для изучения Kotlin
•
Создание нового консольного проекта для изучения Kotlin | IntelliJ IDEA
Устанавливаем значение
•
Объявлем переменную и устанавливаем значение в Kotlin | val, var, lateinit, константа: const val, глобальная переменная: companion object
null
•
null значение используем символ ? и ?. и !! и ?: и !!. и ?. в Kotlin
Int, Float, Boolean, Char ...
•
Целые числа в Kotlin: Byte, UByte, Short, UShort, Int, UInt, Long, ULong
•
Десятичные числа в Kotlin: Float, Double
•
Флаг со значениями true или false в Kotlin это: Boolean
•
Символ в Kotlin это: Char
•
Конвертация числа в текст на языке Kotlin | Int → String
String
•
Строка, текст в Kotlin это: String
•
Интерполяция строк в Kotlin. Пример: val address:String = "${street}, ${country}"
•
В чем отличие String и StringBuilder ?
Enum
•
Что такое перечисление (enum) в Kotlin ?
•
Как найти enum по значению в Kotlin ?
Коллекции и массивы
•
Коллекции это списки, словари и другие классы для добавления, удаления элементов, поиска элементов, сортировки элементов. | Kotlin
•
Списки в Kotlin. interface List , interface MutableList , class ArrayList
•
Создаем коллекции list, set, map и массив array в Kotlin
Функция
•
fun() { ... } - это функция в Kotlin. Функция нужна чтобы выполнить действие.
Функция расширения
•
Функция расширения в Kotlin. Позволяет добавить новую функцию в класс системный (List, ..) или мой (Book, ...)
Лямбда функция
•
Лямбда функция в Kotlin. Пример1: var myFunc1 : (a:Int, b:Int) -> Int = { p1, p2 -> p1 + p2 };
Class
•
Что такое class в Kotlin? Пример: class MyBook { ... } | первичный и вторичный конструктор | блок init
•
lateinit это поздняя инициализация для поля class | Kotlin
•
class, который наследует от интерфейса в Kotlin | Пример: class MyBook : IBook { ...}
•
Безымянный class, который наследует от интерфейса в Kotlin | Пример: val book1 = object : IBook { ...}
•
Общий, template class в Kotlin | Пример: class MyBook[<]T[>] { ... }
Flow
•
flow - это поток данных в Kotlin. Это замена LiveData в Android Kotlin и замена Observable в RxJava
Пишем программу
•
Консольное Kotlin приложение работает как Android Jetpack Compose
Ваши вопросы присылайте по почте:
info@dir.by