Titanium Appcelerator:在不同的线程中加载大量UI

时间:2014-04-14 04:56:41

标签: multithreading titanium appcelerator

我正在处理我的第一个Titanium应用程序。现在我在Android上测试它。我必须从json数据更新几个scrollview。

无论如何使用钛中的某种线程来保持UI响应,同时我的视图被加载。我一直收到这些消息。

[INFO] :   Choreographer: Skipped 191 frames!  The application may be doing too much work on its main thread.
[INFO] :   Choreographer: Skipped 72 frames!  The application may be doing too much work on its main thread.

可能他们没事,但如果数据变重,它会破坏应用程序。

3 个答案:

答案 0 :(得分:0)

默认情况下,您无法在Titanium中访问线程。

在完全构建UI之前,请尝试不在屏幕上显示滚动视图,然后调用show。这意味着当一切都在一起时,它可以绘制一次视图。

您还在scrollView中显示了什么,我们需要更多信息?你为什么使用ScrollView而不是tableView?如果它的表格数据非常简单,并且你有1000多行,那么试着查看一个不灵活但性能很好的ListView控件,它本质上是一个优化的TableView。

这也可能有所帮助:http://www.slideshare.net/omorandi/titanium-mobile-flexibility-vs-performance-13102557

答案 1 :(得分:0)

@Muqeet:我的Android / Titanium应用程序遇到了同样的问题。我的编舞者正在跳过300多帧。我偶然发现了nugget from Titanium docs here

  

改进了表格性能(Android)

     

如果您在使用自定义行时遇到Android上的性能问题,可以尝试设置className属性。类名称用作重用用于显示行的基础视图的提示。

     

给定的className值表示具有一组特定子视图的行。共享类名的所有行必须具有相同的子集 - 例如,类名“myCustomRow”可以标识包含两个标签和图像视图的行。

下面是一个示例代码,我将行类更改为className。

<Alloy>
<!--TableViewRow class="row" dataId="" details = "" isComplete = "" title="" id="rowView"-->
<TableViewRow className="row" dataId="" details = "" isComplete = "" title="" id="rowView">
    <View class="viewCircle" id="viewCircle">
        <Label class="lblPlayer" id="lblPlayer"></Label>    
    </View>
    <Label class="title" id="lblTitle"/>
</TableViewRow>

如您所见,我的行有另一个视图和两个标签。现在,我不再收到此警告,我的tableview正在加载30-45行没有任何问题。我的桌面视图响应更快,感觉更快捷。

坦率地说,我已经放弃了谷歌搜索后试图解决这个问题。希望这有助于其他人。谢谢!

答案 2 :(得分:0)

我认为现在的最佳做法是使用a代替a,如果你有任何大小的数据。已经提到性能是为什么你应该使用而不是; - )