android - 基于函数调用栈优化Android App代码的方法?

标签 android optimization function callstack

我听说 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/

相关文章:

javascript - JavaScript 中的 "uncaught TypeError: Object is not a function"

python - 如何找出 python 函数返回的输出数量?

android - 写入外部文件目录仍然需要权限

java - 无法加载类 com.android.build.gradle.managed.NdkConfig$Impl

c - C 函数中的变量

c - Valgrind 输出解释

java - 如何更改 Java 中应返回类的大量 if/else

android - AdMob 欧盟同意错误 : consent form can be used with custom provider selection only

android - 如何在我的 Activity 中存储来自 API 的数据

Django数据库访问优化: Efficient creation of many-to-many relationships (between existing objects)