2010-05-28 49 views
2

我被告知Android OS将所有函数调用存储在堆栈中。这可能会导致很多问题,并导致运行时出现“打嗝”,即使程序功能正常,是否正确?基于函数调用堆栈优化Android App代码的方法?

所以问题是,我们如何防止这种情况发生?显而易见的解决方案是减少功能,以及其他合理的行为,例如避免过度/不必要地创建对象,对不访问字段的函数执行静态调用等等......

虽然有其他方法吗?或者这只能通过编程人员仔细的代码来完成? JVM/JIT会在编译时自动优化字节码来解释这个吗?

非常感谢您的回复!

+0

有趣的问题。请记住,虽然Android设备不运行Java字节码。 Java被编译成Dalvik可执行文件(与Java不同,它是基于寄存器的架构而不是基于Stack的)。 – 2010-05-28 19:01:15

回答

3

我已经告诉Android操作系统店 所有功能在栈调用

这是几乎所有的编程语言的工作方式,而且一直如此持续30年或40年。

这会导致很多问题,并在运行时 导致“打嗝”, 即使程序功能 正确,是否正确?

不,但如果堆栈空间用完,可能会导致异常。

所以问题是,我们该如何防止 这种情况发生?

如何防止什么发生?

堆栈空间不足的头号罪魁祸首是视图层次太深。使用hierarchyviewer检查您的活动,并计算视图层次结构中有多少级别,从PhoneWindow$DecorView到最远的叶节点。如果你达到15左右,你可能会用完堆栈空间。在这种情况下,简化您的UI,例如用RelativeLayout替换嵌套的LinearLayouts