小编TeH*_*eHa的帖子

NativeScript-Vue在Android下渲染RadListView非常慢并冻结UI

我有一个带有RadListView组件的nativescript-vue应用程序,用于向用户显示数据。列表的每一行都包含当前项目的多个信息。当我点击一个按钮以加载并显示列表时,UI冻结(快速硬件->短;慢速硬件->长)。我发现加载/合并数据的代码部分运行时间很短,但是UI元素的nativescript内部渲染或创建是问题所在。android控制台显示信息

I/Choreographer: Skipped 430 frames!  The application may be doing too much work on its main thread.
Run Code Online (Sandbox Code Playgroud)

平台信息:

  • tns-ios 5.2.0
  • tns-android 5.2.1
  • nativescript-ui-listview 6.2.0
  • tns-core-modules 5.3.1

类似问题报告

我看了stackoverflow和github,但是那里的问题(例如NativeScript Angular RadListView渲染速度非常慢)看起来相似,但是解决方案不适合我。

我使用LinearListView(而不是Grid或Stagged),也许在我的真实应用程序中,我将能够简化列表中的行元素,但在我的示例应用程序中(向下看),我将使用简单的行ui设计。

示例应用

为了获得更简单,更好的报告,我在{N} -Playground上创建了一个示例应用程序。该应用程序将创建10000个数组元素并将其设置为RadListView的源,其中每个元素都有一个Label,一个Switch和一个ActivityIndi​​cator。

I/Choreographer: Skipped 430 frames!  The application may be doing too much work on its main thread.
Run Code Online (Sandbox Code Playgroud)

第一步,将在一个临时数组中生成10000个元素:

loadData() {
    this.tmpAlarms = [];
    for (let i = 0; i <= 10000; i++) {
        this.tmpAlarms.push({
            name: "Hase " + i,
            active: i % 2 === 0, …
Run Code Online (Sandbox Code Playgroud)

radlistview nativescript nativescript-telerik-ui nativescript-vue

9
推荐指数
1
解决办法
460
查看次数