我知道这个问题可能重复,但是我没有找到任何答案,我在需要API 26且设备API为25的Android应用中使用LocalDateTime
。
我该怎么办?非常感谢您的帮助。
答案 0 :(得分:5)
在较低版本的Android上使用LocalDateTime
的最佳方法是通过减半(您必须拥有4.0或更高版本的Android Gradle插件)。只需将以下行添加到您的app
模块gradle文件中:
最后,添加ff。对您的依赖项块的依赖项:
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10'
答案 1 :(得分:1)
您需要使用https://github.com/JakeWharton/ThreeTenABP才能将LocalDateTime与Android API <26一起使用。
将依赖项添加到您的项目中(请遵循项目自述文件):
implementation 'com.jakewharton.threetenabp:threetenabp:1.2.1'
然后从以下位置更改您的LocalDateTime
导入:
import java.time.LocalDateTime;
收件人:
import org.threeten.bp.LocalDateTime;
答案 2 :(得分:0)
您可以使用ThreeTenBP。但是对于android,建议使用Jake Wharton的ThreeTenABP。
为什么不使用ThreeTenBP?
类似于在Android上使用Joda-Time的问题,Threetenbp使用JAR资源加载时区信息。这是Android上效率极低的机制。
该库将时区信息作为标准的Android资产放置,并提供了一个自定义加载程序以有效地对其进行解析。
为什么不使用Joda-Time?
Joda-Time有一个非常大的API,它带来了非常大的二进制文件大小和大量的方法。 JSR-310和Joda-Time的创建者还表示,尽管Joda-Time并未损坏,但确实存在设计缺陷。
如果您已经在使用Joda-Time,则几乎没有理由进行切换,除非它的大小或方法数量与您相关。但是,对于新项目,该库提供了Java 8中的标准API,它是一个较小的软件包,不仅二进制大小和方法数量大,而且在API大小方面也是如此。
这些解释来自杰克·沃顿的ThreeTenABP。