nativeScript-fast-android-r
您出色的 NativeScript 插件。
npm i --save nativescript-fast-android-r

nativeScript-fast-android-r

在 {N} 中查询 android.R,例如使用 android.R.integer.config_longAnimTime,将导致首次调用时超过 500ms 的 UI 延迟。R 是一个包含许多子静态类的大类,因此这种减速可能是因为 {N} 在运行时加载了所有 R 类的元数据。

此插件提供代理对象 androidR,它使用 反射 来查询静态类 integer 和字段 config_longAnimTime,以返回值。

安装

tns plugin add nativescript-fast-android-r

用法

要使用此插件,只需导入 androidR 并像使用 android.R 一样使用它。

import { androidR } from "nativescript-fast-android-r";
console.log(androidR.integer.config_longAnimTime);

性能

首次查询 android.R 通常需要 400-800ms,之后的查询时间可忽略不计。

console.log(android.R.integer.config_longAnimTime); // 400-800ms
console.log(android.R.integer.config_longAnimTime); // ~0ms
console.log(android.R.integer.config_shortAnimTime); // ~0ms
console.log(android.R.integer.config_shortAnimTime); // ~0ms
console.log(android.R.transition.explode); // ~0ms
console.log(android.R.transition.explode); // ~0ms

fast-android-r 缓存了所有查询的类和值。首次查询通常小于 5ms。对相同值的后续查询将花费可忽略不计的时间(O(1) 查找)。首次查询其他字段/类的通常小于 2ms。

console.log(androidR.integer.config_longAnimTime); // 0-4ms
console.log(androidR.integer.config_longAnimTime); // ~0ms
console.log(androidR.integer.config_shortAnimTime); // 0-2ms
console.log(androidR.integer.config_shortAnimTime); // ~0ms
console.log(androidR.transition.explode); // 0-4ms
console.log(androidR.transition.explode); // ~0ms

未来可能性

尽管 R 类的一些值是动态的(例如:资源、字符串等),但大多数不是(integer.config_longAnimTimeinteger.config_longAnimTime 以及在 文档 中定义的其他值)。在允许“动态”值被查询的同时,将不可变值预加载到缓存中可能是有益的。

许可证

Apache 许可证版本 2.0,2004 年 1 月