【问题标题】:How big can strings.xml resources be?strings.xml 资源可以有多大?
【发布时间】:2019-05-22 23:48:22
【问题描述】:

我看到this 的帖子说当strings.xml 变得太大时,应用程序可能会崩溃。我的strings.xml 文件现在有 800 多行,过一段时间会大很多。

帖子中的答案说使用 SQLite 数据库可以防止崩溃。

但就我而言,我有一个 SQLite 数据库,它从 strings.xml 获取条目数据,因为我的应用程序使用不同语言的区域设置。

我的问题是,strings.xml 能有多大?如果我达到了线路限制,我该怎么做才能防止崩溃?

【问题讨论】:

  • 你的 logcat 说了什么
  • 正如我所说的现在没有崩溃,但是我链接的帖子说如果 strings.xml 太大,应用程序就会崩溃。我的strings.xml 会在一段时间内变得很大,我的问题是strings.xml 可以有多大?
  • 为什么不能直接使用SQLite?意味着每种语言一张表?只需选择您需要的语言表并使用其中存储的字符串。
  • @Fantômas 因为该应用程序从一开始就是这样设计的,我们正在使用带有字符串资源的语言环境。并且它需要大量工作来将所有数据从 strings.xml 传输到新表中。也许它会在未来的重构中完成!

标签: android android-resources


【解决方案1】:

Resources.get*** 方法没有任何明确的限制,因此它取决于您设备的内存大小。据我所知,旧版 Android 有per process memory limitation

【讨论】:

  • 所以这与 strings.xml 有多大无关?但是关于 Resources.get*** 方法?
  • 因为我的 strings.xml 文件将超过 1000 行。这不是问题吗?
  • 因为您使用 Resources 的方法读取 strings.xml。一个 xml 文件中有 1000 多行并不奢侈。您只需要注意内存使用情况。
【解决方案2】:

strings.xml 没有限制。它更多的是加载字符串数组的问题。 getResources().getStringArray 函数并不意味着加载元素数超过 512 的数组(更多关于这里的信息 Should I be using something other than getResource().getStringArray() to populate a large array?)但只要你不使用大数组就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 2016-05-06
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多