Конвертер даты и времени для комнаты, поддерживающей Api 24 и Api 26 - PullRequest
0 голосов
/ 16 мая 2019

Ниже приведен вспомогательный класс для комнаты, которая конвертирует Instant в Long для sqlite.Проблема в том, что мое устройство на Api 24, и я использую функцию, доступную только на Api 26. Как я могу поддержать это, не добавляя дополнительную библиотеку?

   class DateConverter {
        companion object {
            @TypeConverter
            @JvmStatic
            fun fromInstant(value: Instant): Long {
                return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                    value.toEpochMilli()
                } else {
                    TODO("VERSION.SDK_INT < O")
                }
            }

            @TypeConverter
            @JvmStatic
            fun toInstant(value: Long): Instant {
                return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                    Instant.ofEpochMilli(value)
                } else {
                    TODO("VERSION.SDK_INT < O")
                }
            }

        }
    }

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Вы можете использовать библиотеку ThreeTen Android Backport:

https://github.com/JakeWharton/ThreeTenABP

Затем просто обновите свой импорт до org.threeten.bp.Instant и удалите проверку версии.

0 голосов
/ 16 мая 2019

Как вы знаете, вы не можете использовать Instant. Вам нужно использовать порядковые long, Date или другие библиотеки.
Вы используете ofEpochMilli(long), так что это почти то же самое с new Date(long).

...