Java 对AndroidThreen.init()的调用是强制性的吗?
指示用户在其应用程序的Java 对AndroidThreen.init()的调用是强制性的吗?,java,android,threetenbp,Java,Android,Threetenbp,指示用户在其应用程序的onCreate()方法中调用androidThreen.init()。是的,这是对3tenbp的安卓(据说更快)改编,而不是原来的(完全便携的)3tenbp 然而,如果我忽略了这个电话,我的应用程序似乎运行良好,没有任何明显的错误。这种方法只是为了加快速度,预计可能会有很长的初始化时间,这样在第一次使用时就不会减慢速度(急切的初始化与懒惰的初始化)?或者,如果我没有正确初始化ThreeTenABP,是否有可能得到不正确的结果?描述了由于未能初始化库而导致的错误 主要收获:
onCreate()
方法中调用androidThreen.init()
。是的,这是对3tenbp的安卓(据说更快)改编,而不是原来的(完全便携的)3tenbp
然而,如果我忽略了这个电话,我的应用程序似乎运行良好,没有任何明显的错误。这种方法只是为了加快速度,预计可能会有很长的初始化时间,这样在第一次使用时就不会减慢速度(急切的初始化与懒惰的初始化)?或者,如果我没有正确初始化ThreeTenABP,是否有可能得到不正确的结果?描述了由于未能初始化库而导致的错误
主要收获:如果无法初始化ThreeTenABP,某些方法调用(那些依赖时区数据的方法调用)将抛出异常
如果您测试了代码中的每个ThreeTenABP调用,并确保它们都不会引发异常,则不确定会发生什么。这很可能是不受支持的配置。我没有足够的信心来确定(因此,没有答案),但我认为如果没有此呼叫,您将失去使用优化端口的好处。调用注册优化的ZoneRulesProvider,这可能是ThreeTenABP比普通ThreeTenBP更快的原因。还要注意的是,从Android 8开始,有一个本机的
java.time
实现,由于它使用了系统本机时区数据库,它的性能应该会更好。是的,我知道Android 8+中有java.time
,我只是不知道如何在这两个实现之间切换(考虑到代码位于一个可移植库中,该库需要支持Android 4.4+和JRE)。