我听说 Android 操作系统将所有函数调用存储在堆栈中。即使程序功能正常,这也会导致许多问题,并在运行时导致“打嗝”,对吗?
所以问题是,我们怎样才能防止这种情况发生呢?显而易见的解决方案是减少功能化,以及其他明智的行为,例如避免过度/不必要地创建对象、对不访问字段的函数执行静态调用等......
还有别的办法吗?或者这只能通过程序员仔细编写代码来完成? JVM/JIT 是否会在编译时自动优化字节码来解决这个问题?
非常感谢您的回复!!
最佳答案
I've been told that Android OS stores all function calls in a stack
这几乎是所有编程语言的工作方式,并且这种情况已经持续了 30 或 40 年。
This can lead to many problems and cause the 'hiccups' during runtime, even if a program is functionalized properly, correct?
不会,但如果堆栈空间不足,可能会导致异常。
So the question is, how can we prevent this from happening?
如何防止事情发生?
耗尽堆栈空间的第一大罪魁祸首是 View 层次结构太深。使用 hierarchyviewer 检查您的 Activity ,并计算 View 层次结构中从 PhoneWindow$DecorView
到最远叶节点的层数。如果达到 15 左右,则可能会耗尽堆栈空间。在这种情况下,请简化您的 UI,例如将嵌套的 LinearLayouts
替换为 RelativeLayout
。
关于android - 基于函数调用栈优化Android App代码的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2931676/