我正在努力获得更好的理解,因此我可以在创建Android应用程序/服务时确定潜在互操作性问题的可靠性影响范围.我想弄清楚如何确定进程优先级.服务和活动之间的优先级差异以及调度程序是否以不同方式处理其优先级.基本上我正在努力深入了解一个活动或服务被来自不同应用程序(甚至是Linux内核)的流氓进程所匮乏的可能性.
有没有人有你可以推荐的任何好的链接...我的搜索还没有发现太多.
谢谢!
编辑:我关心的是处理器时间切片/调度,而不是内存资源(内存资源在android文档中有详细描述.)再次感谢!
我一直遇到app(使用java和C++以及OpenCV)的问题,这似乎与执行各种任务所花费的时间非常不一致.为了帮助诊断这个,我在java(被调用one_off_speed_test())中创建了一个函数,它只需要一个循环中的一系列整数数学问题,大约需要半秒钟,然后打印到日志所需的时间.如果我从内部重复调用此函数,onCreate()则每次调用所用的时间非常一致(+ = 3%),但如果我从内部调用它onCameraFrame(),则OpenCV在从相机准备好图像时调用的函数,则每个框架中进行数学测试所花费的时间因任何因素而异.我决定在eclipse/DDMS中尝试执行采样器,看看我是否可以解决发生的事情.我看到当我点击one_off_speed_test()它时,它列出了该功能的父母和孩子,以及一行说" (上下文切换) ".然后在该行上,在标有" Incl Real Time " 的列下,它显示"66%".现在我对使用DDMS并不是很专业,而且我对上下文切换只有一个朦胧的想法,但是到目前为止的描述中,看起来我的上下文切换问题需要花费很多时间吗?或者我误解了DDMS输出.

我通过OpenGL渲染对象,并在大多数情况下获得了60fps的平滑帧率.UNTIL我在后台线程中做了很多事情,比如从REST API中获取东西,处理它,以及向图形添加对象(低优先级的东西,我更关心UI流动性).然后渲染器将暂停很长一段时间,最多1秒(大约只要后台线程运行),然后恢复,就像没有发生任何事情一样.我注意到这是因为动画同时启动,并且在此期间卡住了.后台线程设置为最低优先级,垃圾收集最多需要100-200ms,但不是整秒.当我在后台任务中的任何位置设置调试点时,渲染继续正常,没有任何延迟.
我的沉重的后台线程是否有可能使OpenGL线程匮乏?如果是这样,我该怎么办?
android ×3
android-ndk ×1
cgroups ×1
dalvik ×1
frame-rate ×1
opencv ×1
opengl-es ×1
profiling ×1
scheduler ×1