【问题标题】:Ways to optimize Android App code based on function call stack?基于函数调用栈优化Android App代码的方法?
【发布时间】:2010-05-29 04:34:59
【问题描述】:

有人告诉我,Android 操作系统将所有函数调用存储在一个堆栈中。这可能会导致许多问题并在运行时导致“打嗝”,即使程序功能正确,对吗?

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

还有其他方法吗?或者这只能通过程序员仔细编写代码来完成? JVM/JIT 是否会在编译时自动优化字节码来解决这个问题??

非常感谢您的回复!

【问题讨论】:

  • 有趣的问题。请记住,Android 设备不运行 Java 字节码。 Java 被编译成 Dalvik 可执行文件(与 Java 不同,它是基于寄存器的架构,而不是基于堆栈的)。

标签: android optimization function callstack


【解决方案1】:

有人告诉我,Android 操作系统商店 堆栈中的所有函数调用

这几乎是所有编程语言的工作方式,并且这种情况已经持续了 30 或 40 年。

这会导致很多问题和 在运行时导致“打嗝”, 即使程序功能化 对对对吗?

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

所以问题是,我们如何预防 这会不会发生?

如何防止什么发生?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多