我正在处理我的第一个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.
可能他们没事,但如果数据变重,它会破坏应用程序。
答案 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,如果你有任何大小的数据。已经提到性能是为什么你应该使用而不是; - )