android图片平滑滚动,意外的android系统调用可以平滑显示滚动图...

我目前正在编写一个应该以滚动方式显示实时测量曲线的应用程序(想想ECG记录仪或示波器). UI-Thread中的意外系统调用会使显示结果不稳定.

数据通过蓝牙输入.一切正常,显示平滑滚动,平均更新速率为26帧/秒.但是,尽管如此,显示器仍然很明显.

我使用traceview来获得更多洞察力,并且根据traceview,口吃是对android / view / ViewRoot.handleMessage的调用的结果,平均每次调用持续131毫秒.

如果我在traceview中进一步挖掘,那么循环就会在android / view / ViewRoot.performTraversals中被烧掉.在对android / view / View.measure的大多数递归调用中消耗了92%的CPU周期.

从那里它由于递归调用结构而变得复杂.但我可以找到对LinearLayout,FrameLayout和RelativeLayout的onMeasure()方法的调用.每种布局类型的onMeasure()方法消耗大约相同的CPU周期.这很奇怪,因为在我的活动中我只使用一个简单的LinearLayout只有2个元素.

我只是没有理由为什么假设重新布局一个带有2个元素的LinearLayout执行对未使用的布局的调用,并且需要高达131毫秒才能做到这一点.

更多信息:

>平台HTC渴望HD与Android 2.3.1.

>我使用处理程序在UI线程中执行绘图.

>布局是一个简单的LinearLayout,包含2个元素:自定义视图和textField.

>使用getWindow()隐藏状态栏.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);.

>对每个新数据块执行绘图,大约到达.每50毫秒.

>绘图本身使用画布,其性能足以跟上传入的数据.

经过长时间的解释,以下是问题:

>什么是调用android / view / ViewRoot.handleMessage? (调用每隔850毫秒相对相等,没有明显的链接(没有直接调用,调用次数和相对位置没有链接到绘图的消息处理程序)到我的Activity的任何活动)

>我如何抑制对android / view / ViewRoot.handleMessage的调用,或者如何让它们更快(我的LinearLayout中只有2个元素)

>对未使用的布局的调用首先让我想到状态栏或一些隐藏的活动(例如主屏幕),它们可能使用这种布局.但是为什么这些电话是我活动的一部分呢?据我所知,跟踪应该只跟踪活动进程.例如产生实时数据的服务调用不是跟踪的一部分.

>是否有可能跟踪某些系统组件的单个呼叫?当我放大traceview时,我看到这个调用顺序:toplevel – > android / os / Message.clearForRecycle() – > android / os / MessageQueue.nativePollOnce() – > android / os / SystemClock.uptimeMillis() – > com / htc / profileflag / ProfileConfig.getProfilePerformance() – > android / os / Handler.dispatchMessage() – >机器人/视图/ ViewRoot.performTraversals()

>非主题:是否有可能导出除了截图以外的traceview(parent-children-CPU time等)内显示的数据?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值