如何根据函数调用堆栈优化Android App代码?

时间:2010-05-28 18:47:14

标签: android optimization function callstack

我被告知Android OS将所有函数调用存储在堆栈中。这可能会导致许多问题,并在运行时导致“打嗝”,即使程序功能正常,是否正确?

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

还有另一种方法吗?或者这只能通过在程序员身上仔细编写代码来完成吗? JVM / JIT是否在编译期间自动优化字节码以解决这个问题?

非常感谢您的回复!!

1 个答案:

答案 0 :(得分:3)

  

我被告知Android OS存储   堆栈中的所有函数调用

这就是所有编程语言的工作方式,30年或40年就是如此。

  

这可能会导致很多问题   在运行时导致'打嗝',   即使程序功能化   这是正确的吗?

不,但如果你的堆栈空间不足,可能会导致异常。

  

所以问题是,我们如何防止   这发生了什么?

如何阻止发生什么

耗尽堆栈空间的第一个罪魁祸首是视图层次结构太深。使用hierarchyviewer检查您的活动,并计算视图层次结构中从PhoneWindow$DecorView到最远的叶节点的层数。如果你到了15左右,你可能会耗尽堆栈空间。在这种情况下,请简化您的用户界面,例如将嵌套的LinearLayouts替换为RelativeLayout