我的应用程序用户可以从应用程序的设置页面更改应用程序语言,因此我使用Resources开发了它。updateConfiguration()和上下文。创建配置上下文()(不赞成)。然而,几乎开发人员使用Locale.setDefault()
,但我不知道为什么。我的应用程序可以支持多语言没有Locale.setDefault()
。我读文档,但这似乎太危险了。更改JVM的区域设置对系统设置或其他应用程序安全吗?更改JVM区域设置的目的是什么?我认为这是使用Resource.updateConfiguration()
和Context.createConfigurationContext()
就够了,但开发人员为什么要使用Locale.setDefault()
方法呢?
2条答案
按热度按时间s2j5cfk01#
我假设“安全”意味着“不影响其他应用程序”
据我所知,android会为每一个启动的apk/app启动一个新的 JVM 示例。因此
Locale.setDefault()
应该不会影响其他android apk/app。所以它应该是安全的。我已经在这里做了,没有看到对其他应用程序的影响。
5lhxktic2#
According to Locale.setDefault() documentation. setDefault()的作用是
设置此Java虚拟机示例的默认区域设置。这不会影响主机区域设置。
这里的
host locale
引用了Android操作系统的区域设置,而Java Virtual Machine (JVM) instance
将转换为Android术语中的Android运行时(ART)示例,根据这些信息,我们可以推断,由于每个Android应用进程都运行自己独立的ART示例,这意味着setDefault()将 * 仅 * 影响一个Android应用进程,而不是整个操作系统或任何其他应用进程。