npm i --save nativescript-fast-android-r
- 版本: 1.1.0
- GitHub: https://github.com/edusperoni/nativescript-fast-android-r
- NPM: https://npmjs.net.cn/package/nativescript-fast-android-r
- 下载
- 昨天: 0
- 上周: 2
- 上个月: 9
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_longAnimTime
、integer.config_longAnimTime
以及在 文档 中定义的其他值)。在允许“动态”值被查询的同时,将不可变值预加载到缓存中可能是有益的。
许可证
Apache 许可证版本 2.0,2004 年 1 月