- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用显示用户联系人的 UITableView。对于一些拥有大量联系人(5000 多个联系人)的用户,tableview 也有 5000 多行。
具有约 12k 行的演示案例中的 reloadData 方法在设备上需要 100 毫秒。
在这 100 毫秒中,仅“tableView:heightForRowAtIndexPath:”就需要 30 毫秒,但实际上只是:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.row>50)
{
return 47
}
return 62;
}
这是因为它被调用了 12,000 次。
有什么方法可以加快速度吗?
最佳答案
根据 Apple 的 UITableView 文档:
"There are performance implications to using tableView:heightForRowAtIndexPath: instead of rowHeight. Every time a table view is displayed, it calls tableView:heightForRowAtIndexPath: on the delegate for each of its rows, which can result in a significant performance problem with table views having a large number of rows (approximately 1000 or more)."
我强烈推荐一种不同的实现方式,无论是将您的数据源限制为较小的数量并仅在需要时(即滚动)增加它还是其他一些方法。
我刚刚创建了非常简单的类似代码,包含 20,000 行,并记录了单元格的创建时间和调用 heightForRowAtIndexPath 的时间,最初只创建了 10 个单元格,但 全部 20,000甚至在生成 View 之前就计算了高度两次。
关于ios - uitableview reloaddata 方法阻塞 uithread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24167082/
我正在开始一个新的 Android 项目,并且想了解有关 OrmLite 的所有信息 + 使数据库访问远离 UI 线程。 OLD:在我的上一个项目中,我为每个插入/更新/删除调用使用了一个 Threa
虽然在自己的线程上运行长期任务很有用,但为了更新 UI 组件,需要在 UIThread 中运行代码。否则,您的应用程序将在执行期间抛出 CalledFromWrongThreadException。如
doAsync { doSomethingAsync() uiThread { doSomethingUiThread() } } 基于上面的代码。我知道 do
我正在尝试使用 Bluetooth 将 android 数据发送到 arduino .My gui 包含一个 SeekBar和加速度计读数。所有Sockets已成功形成,如果我将数据写入 Output
有人可以向我解释一下 UI 线程到底是什么吗?在 developer.android.com 上,它提到了 runOnUiThread 函数 public final void runOnUiThre
使用 android-annotations 我可以替换 AsyncTask与 @UiThread . 但是可以处理像 AsynkTask 的 onPreExcecute/onPostExecute
当 MediaPlayer 正在播放时,我在 UIThread 上有一个 Runnable 更新 SeekBar。然而,当我切换到另一个 Activity 时,我的应用程序因异常而崩溃,导致 Runn
我正在使用显示用户联系人的 UITableView。对于一些拥有大量联系人(5000 多个联系人)的用户,tableview 也有 5000 多行。 具有约 12k 行的演示案例中的 reloadDa
AndroidAnnotations提供一个注释,允许在 UI 线程上运行一个方法,无论它是从哪个线程调用的,例如 void myMethod() { doInUiThread("hello"
我目前正在使用 Anko 的 doAsync 来处理异步任务。具体来说,我使用它来解析对数据对象的 ArrayList 的响应 json,如下所示: // Asynchronously parse s
我有一个类,它通过 PRISMs 事件聚合器订阅一个事件。 因为模拟事件聚合器有点困难,如 here 所述。 ,我只是实例化一个真实的并将其传递给被测系统。 然后在我的测试中,我通过该聚合器发布事件,
我使用名为“Fuel”的库从服务器获取数据,这是我的代码: button1.setOnClickListener { val jb = "{......}"
标题说明了一切。好吧,主要是。这只发生在 1 台设备上。其他设备没问题。 在 AsyncTask 的 onPostExecute 中,我调用下面的代码,在得到这个异常之前我没有 runOnUiThre
我正在使用 OkHttp3 执行 GET API 调用,该方法有效,但是我想使用 GET 调用的结果更新 UiThread 中的 TextView (jsonTextView)。 我尝试了 10 种不
我是 Android 开发的新手,这是我的第一个应用程序。 问题可能很简单,但我找不到解决方案。 此应用程序是一个简单的 ImageViewer,应用程序必须连接到服务器,并且根据某些数据,服务器将返
第一遍似乎要么使可绘制区域无效,要么绘制背景。第二遍渲染菜单。如果有任何延迟(如下面的示例所示),则会出现灰色方 block 闪烁效果。 这是 Linux 上的 JDK8。 如何停止这种闪烁效果? p
我想在 UiThread 上运行的线程中显示 toast 消息,但在我的调用中似乎未正确引用 Runnable。请在下面查看我非常基本的实现: this.runOnUiThread(new Runna
我以为 @UiThread和 @MainThread是同一件事。 最佳答案 @MainThread 是您启动应用程序时第一个开始运行的线程 @UiThread 从渲染用户界面的主线程开始 同样来自 A
thread = new Thread() { public void run() { super.run(); System.out.
private Handler workerHandler; // instance variable of UIThread 在 onCreate() 方法中 WorkerThread wt = n
我是一名优秀的程序员,十分优秀!