2

Android OSは、すべての関数呼び出しをスタックに格納すると言われています。これは多くの問題を引き起こし、プログラムが適切に機能している場合でも、実行時に「一時的な中断」を引き起こす可能性があります。

だから問題は、どうすればこれが起こらないようにすることができるかということです。明らかな解決策は、過度に/不必要にオブジェクトを作成しない、フィールドにアクセスしない関数への静的呼び出しを実行するなど、他の賢明な行為とともに、機能化を減らすことです...

別の方法はありますか?それとも、これはプログラマー側で注意深くコードを書くことによってのみ行うことができますか?JVM / JITは、これを考慮してコンパイル時にバイトコードを自動的に最適化しますか?

ご回答ありがとうございます!!

4

1 に答える 1

3

AndroidOSはすべての関数呼び出しをスタックに保存すると言われています

これは、ほとんどすべてのプログラミング言語が機能する方法であり、30年または40年にわたってそうなっています。

これは多くの問題を引き起こし、プログラムが適切に機能している場合でも、実行時に「一時的な中断」を引き起こす可能性があります。

いいえ。ただし、スタックスペースが不足すると、例外が発生する可能性があります。

だから問題は、どうすればこれが起こらないようにすることができるかということです。

どうすればが起こらないようにすることができますか?

スタックスペースが不足している最大の原因は、ビュー階層が深すぎることです。アクティビティを調べ、ビュー階層内の最も遠いリーフノードまでのhierarchyviewerレベル数を数えるために使用します。PhoneWindow$DecorView15前後になると、スタックスペースが不足する可能性があります。LinearLayoutsその場合は、ネストを。に置き換えるなど、UIを簡素化しますRelativeLayout

于 2010-05-28T20:34:59.980 に答える