Как подсчитать время выполнения наблюдаемого

Я ищу решение для измерения выполнения какой-либо задачи

  1. Я хочу запустить таймер в некотором месте
  2. Я хочу выполнить некоторую задачу
  3. В другой части кода я хочу, чтобы можно было остановить таймер, я получаю окончательное время выполнения выполнения

Я думаю, это может быть очень похоже на использование EventBus для публикации события начала подсчета и остановки.

Поэтому у меня есть функция:

doSomething(){ //start counting } 

в функции ohter я хочу иметь доступ к счетчику и вызывать остановку на нем:

 otherFunctionWhichCanBeInvokedLater(){ //stop counter and get the duration time } 

Есть ли хороший способ сделать это в Rx? Я хочу использовать Kotlin и RxJava2 для этого.

как насчет использования крючков doOnXXX , например:

 fun startTimer() { //start counting } fun stopTimer() { //stop counter and get the duration time } fun observe() { Observable.just(...) .doOnSubscribe { startTimer() } .doFinally { stopTimer() } .subscribeBy(...) } 

в зависимости от ваших требований, вы можете заменить doOnFinally установкой, которая использует doOnComplete и / или doOnError .

Intereting Posts
Android gradle build неожиданно отключается в ': app: mergeDebugResources' без сообщений об ошибках Как установить «sourceCompatibility» для Kotlin и Gradle? Почему Android Studio конвертирует некоторые примитивные типы Kotlin как условно-безопасный оператор? Как добавить +/- функциональность к боттингу в андроиде kotlin Перехватчик Kotlintest и латинитовые вары Создать файл ZIP в Котлине Регулярное выражение для соответствия символам только в начале строки Поток Akka, выше по потоку, не производя значения Как создать объект JavaScript для объекта Kotlin? Как включить HtmlUnit в проект Kotlin Как открыть ссылки, не связанные с URL веб-браузера в браузере из приложения Android: Тип MenuPopup недоступен в этом контексте из-за: MenuPopup Случайное переопределение: следующие объявления имеют одну и ту же подпись JVM Android Studio показывает ошибки в layout.xml Как создать фиксированный размер IntArray и инициализировать массив позже в Котлин?