- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在编写一个应以滚动方式显示实时测量曲线的应用程序(想想 ECG 记录器或示波器)。 UI-Thread 中的意外系统调用导致显示卡顿。
数据通过蓝牙传入。一切正常,显示滚动相当流畅,平均更新率为 26 帧/秒。但是,尽管如此,显示还是非常卡顿。
我使用 traceview 获得更多信息,根据 traceview,卡顿是调用 android/view/ViewRoot.handleMessage
的结果每次通话平均持续 131 毫秒。如果我在 traceview 中进一步挖掘,循环会在内部燃烧 android/view/ViewRoot.performTraversals
.这些 CPU 周期的 92% 主要用于对 android/view/View.measure
的递归调用。 .
从那里开始由于递归调用结构而变得复杂。但我可以找到对 LinearLayout、FrameLayout 和 RelativeLayout 的 onMeasure() 方法的调用。每种布局类型的 onMeasure() 方法消耗大约相同数量的 CPU 周期。这很奇怪,因为在我的 Activity 中我只使用了一个只有 2 个元素的简单 LinearLayout。我只是看不出为什么一个假设的 LinearLayout 与 2 个元素的重新布局执行对未使用的布局的调用并且需要高达 131 毫秒的时间来执行此操作。
更多信息:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
.在解释了那么长之后,下面是问题:
toplevel -> android/os/Message.clearForRecycle() -> android/os/MessageQueue.nativePollOnce() -> android/os/SystemClock.uptimeMillis() -> com/htc/profileflag/ProfileConfig.getProfilePerformance() -> android/os/Handler.dispatchMessage() -> android/view/ViewRoot.performTraversals()
最佳答案
好的,我找到了长时间调用android/view/ViewRoot.handleMessage
的原因。这确实是我的申请造成的。
我的应用程序有 2 个屏幕( Activity ),一个是用于状态信息的复杂布局,另一个是实时显示传入数据。
通过蓝牙传入的数据包含混合的实时数据和状态数据。当我切换到实时 Activity 时,我在启动新的实时 Activity 后用 finish();
停止状态 Activity。不幸的是,这还不足以停止消息处理程序,它在 UI 线程中接收新的状态信息,并继续在不可见的已完成 Activity 中更新状态数据。此 Activity 的重新布局导致实时数据的断断续续。
现在已经解决了。显示滚动现在相当平滑。
感谢您的耐心等待。可能对在 stackoverflow 上偶然发现此线程的任何人有用。
杰普
关于android - 意外的android系统调用使滚动图形卡顿的流畅显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8340766/
我在 Java Swing 中移动 block 时遇到卡顿问题。 下面的代码将显示该问题。运行时,我希望盒子移动平稳,没有任何卡顿。 Swing中有没有办法实现这一点?或者我应该继续使用 JavaFX
在我的应用程序中,我在主要 Activity 中实现了滑动菜单抽屉。菜单的设计是自定义的,单击菜单中的列表项会打开一个 fragment 。 private class SlideMenuClickL
我尝试制作ImageView 的扩展布局动画和平移 动画,但我同时启动它们时它们看起来有点滞后。我在真实设备 Moto X(2013) 上对其进行了测试。不确定更强大的设备,因为默认情况下我所有的模拟
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
首先,让我澄清一些事情: 我的显示器频率为 60 赫兹 我将我的 FPS 限制在 60,它似乎工作正常 我激活了双缓冲标志 我自己制作了一个后台缓冲区,并确保绘制到它,然后再绘制到屏幕 这个问题在全屏
我在以下测试页面上使用 Flexslider(旧版本 1.0,支持 jquery 1.4.8):http://www.showstyle.lu/service/startv2/ 如您所见, slide
我有一项服务可以在 AysncTask 的 doInBackground() 方法中下载一个大文件: data = new byte[8192]; output = new FileOutputStr
我有一个动画师,infinite_rotation,定义为: 当我不再需要它的时间(时间不确定)到来时,我调用 infinite_animator.cancel()。然后在其布局容器上播
向元素添加过渡并更改宽度和/或高度以及 -webkit-transform:translate3d 时,过渡动画会断断续续。它似乎首先为宽度/高度变化设置动画,并对其进行部分平移,然后捕捉到最终平移位
当 AVSpeechSynthesizer 正在说一个句子时,UI 发生变化(例如 ViewController 被推送,UIButton的标题已更改,...),AVSpeechSynthesizer
在 Firefox 11 中,我在使用 HTML5 的 Canvas 和翻译的一些基本动画中遇到偶尔的抖动/犹豫/卡顿。 请看下面的例子... http://jsfiddle.net/ACRdx/ 上
问题 我正在尝试让 Canvas 上的图像从左向右平滑移动。它在 Chrome/Safari 上还不错(仍然有点卡顿),但在多台机器上的 Firefox 中有明显的卡顿(在 Windows 和 Mac
我正在使用 Ariel Flesler's ScrollTo script在 this page .我在页面底部有两个链接,可以滚动到页面顶部(其中一个还可以打开联系表格)。我注意到在滚动开始时页面顶
我一直在尝试创建一个充满卡片 View 的回收站 View 。目前,我正在使用来自 this tutorial 的 Recycler View并加载 14 张不同的图像。专业品质的图像大小范围从 13
我创建了一个带有自定义单元格的 UItableview。这些单元格有两个 UILabel 和一个在后台线程上调用图像的 ImageView 。这些单元首先加载一些占位符数据,以防 API 调用时间较长
用例 我有 68 个钢琴样本,每个样本大约。 174 kB,Ogg 数据,Vorbis 音频,立体声,s16,44100 Hz,352 kb/s,4 秒。 我需要同时演奏它们的不同组合(音乐术语:和弦
喂, https://jsfiddle.net/jbwq6y87/7/ #box { width: 500px; height: 500px; transition: 0.5s; ov
这是一个演示: http://nushuttles.com/chords/player.html 顶部的方 block 是用 Flash 渲染的,下面的方 block 是用 Javascript 制作
我有一个 RecyclerView 这是一个垂直滚动的项目列表。每个列表项在 Lite Mode 中包含一个 Google Maps V2 MapView .我正在利用这个返回位图而不是完整 map
在我的应用程序中,一旦用户进入它,我在仪表板上有太多动画只发生一次 - 即当用户第一次进入应用程序时 - 我在 viewDidAppear 中以这种方式执行动画,调用 upperViewAnimati
我是一名优秀的程序员,十分优秀!