ICU4J 是一个广泛使用的开源 Java 库集合,为软件应用提供 Unicode 和全球化支持。 Android N 在
android.icu
软件包下显示 Android 框架中的 ICU4J API 子集,供应用开发者使用。 这些 API 使用设备上具有的本地化数据。 因此,您可以通过不将 ICU4J 库编译到 APK 来减少 APK 占用空间;相反,您可以只在框架中调用它们。 (在此情况下,您可能想要提供多个版本的 APK,这样,运行比 Android N 低的 Android 版本的用户可以下载包含 ICU4J 库的应用版本。)
本文档开头提供了有关支持这些库所需的最低 Android API 级别的一些基本信息。 然后,介绍关于 Android 特定的 ICU4J 实现您需要了解的内容。 最后,介绍如何在 Android 框架中使用 ICU4J API。
与 ICU4J 的关系
Android N 通过
android.icu
软件包(而非
com.ibm.icu
)显示 ICU4J API 的子集。由于种种原因,Android 框架可能选择不显示 ICU4J API;例如,Android N 不显示一些已弃用的 API 或 ICU 团队尚未将其声明为“稳定”的 API。 由于 ICU 团队将来会弃用这些 API,因此,Android 也会将其标记为已弃用,但将继续包含它们。
表 1.
Android N 中使用的 ICU 和 CLDR 版本。
Android API 级别
|
ICU 版本
|
CLDR 版本
|
Android N
|
56
|
28
|
以下是几点注意事项:
-
ICU4J Android 框架 API 不包含所有的 ICU4J API。
-
NDK 开发者应了解 Android ICU4C 不受支持。
-
Android 框架中的 API 不会取代 Android 对使用资源进行本地化的支持。
从 com.ibm.icu 迁移至 android.icu 软件包
如果您已在应用中使用 ICU4J API,且
android.icu
API 符合您的要求,那么要迁移至框架 API,需要将 Java 导入从
com.ibm.icu
更改为
android.icu
。 然后,您可以从 APK 移除您自己的 ICU4J 文件的副本。
注
:ICU4J 框架 API 使用
android.icu
命名空间,而不是
com.ibm.icu
。这是为了避免在包含自己的
com.ibm.icu
库的 APK 中出现命名空间冲突。
从其他 Android SDK API 迁移至 android.icu API
java
和
android
软件包中的某些类与在 ICU4J 中找到的一些类等效。 不过,ICU4J 通常为标准和语言提供更广泛的支持。
下面是一些入门示例:
类
|
替代项
|
java.lang.Character
|
android.icu.lang.UCharacter
|
java.text.BreakIterator
|
android.icu.text.BreakIterator
|
java.text.DecimalFormat
|
android.icu.text.DecimalFormat
|
java.util.Calendar
|
android.icu.util.Calendar
|
android.text.BidiFormatter
|
android.icu.text.Bidi
|
android.text.format.DateFormat
|
android.icu.text.DateFormat
|
android.text.format.DateUtils
|
android.icu.text.DateFormat
android.icu.text.RelativeDateTimeFormatter
|
授权
ICU4J 按照 ICU 许可发布。如需了解详情,请参阅 ICU 用户指南。
python 多线程的问题 python多线程的作用
线程一.什么是线程?操作系统原理相关的书,基本都会提到一句很经典的话: "进程是资源分配的最小单位,线程则是CPU调度的最小单位"。
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
好处 : 1.易于调度。2.提高并发性。通过线程可方便有效地实现并发性