Umy*_*Umy 8 performance android android-appcompat android-recyclerview
我将应用程序依赖项从 appcompat 1.3.1 更新到 appcompat 1.4.1,其中关键更改之一是:
默认情况下通过 androidx.emoji2 库启用可更新的表情符号支持
在我看来,我的应用程序中 RecyclerView 的流畅度变差了,Profiler 证实了这一点。我的 ViewHolder 中有 4 个 TextView,其 setText 方法一直是 onBind 中最慢的操作之一。但更新之后,情况就变得灾难性的:
onBind 现在平均需要 11ms,其中 7.3ms 是4 个 textview 的androidx.emoji2.viewsintegration.EmojiInputFilter.filter()总和androidx.emoji2.viewshelper.EmojiTransformationMethod.getTransormation()。我不像大多数开发人员那样需要表情符号支持,我需要应用程序顺利运行。有没有办法在不降级到 1.3.1 的情况下禁用 emoji2?
下面是一个 TextView 的分析器的屏幕截图。父 setText() 方法花费了 3.76 毫秒。“Summary”选项卡(右侧)和 getTransormation() 弹出窗口中提供了 filter() 方法的计时。
我在 emoji2 页面上找到了答案: https: //developer.android.com/jetpack/androidx/releases/emoji2。“配置自动初始化”段落。
因此,要禁用 emoji2,我们应该将此代码添加到 AndroidManifest.xml 中的 <application> 标记中
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data android:name="androidx.emoji2.text.EmojiCompatInitializer"
tools:node="remove" />
</provider>
Run Code Online (Sandbox Code Playgroud)
性能的提升是显而易见的:
onBind 现在只需要 6.5 毫秒,而不是 11 毫秒。
| 归档时间: |
|
| 查看次数: |
1532 次 |
| 最近记录: |