6

私を悩ませている質問があります。

onCreateAndroid では、アクティビティの新しいインスタンスが作成されるたびに呼び出しているように見えるアプリケーションがあります。これは、このアクティビティが別のアクティビティの息子であり、1 つのデータに対する役割を終了している間に終了するためです。

onCreate毎回の呼び出しは、XML を再解析してビューを作成し、リスナーをコードに再アタッチ/再作成するなどのようです。では、モバイル デバイスの [戻る] ボタンをクリックしても表示されることなく、毎回呼び出されるアクティビティをキャッシュする方法はありますか? これは、本当に隠して (戻るボタンでアクセスできない)、必要な場合にのみ破棄するようなものです。

事前にみんなありがとう:)

4

3 に答える 3

6

Android は、ほとんどの適用可能なビューとアクティビティのキャッシュを処理するため、心配する必要はありません。alexkipar のアプローチに対して強く警告します。これは非常にナイーブであり、パフォーマンスを悪化させるだけでなく、メモリ リークを引き起こし、間違った動作を一掃します。

アクティビティが頻繁に作成されていると思われる場合は、アクティビティのライフサイクルを正しく使用して理解していることを確認することをお勧めします。すべてのシステムと同様に、Android は効率と再利用性のバランスをとっており、常にトレードオフが発生します。

あなたが言及した一般的な誤解には、XML の解析が含まれます。ビューの XML は、純粋な XML として保存されるのではなく、効率のためにコンパイルされた形式で保存されます。これについて心配する必要はありません。システムが可能な限り効率的にしようとしていると信じてください。

于 2009-05-03T16:22:49.360 に答える
0

アクティビティが作成されるたびにonCreateが呼び出されるのを防ぐことはできません。これは、それが機能する方法だからです。

ここでの問題は、アーキテクチャの問題です。頻繁に使用する機能がありますが、それにはかなりの作業を費やしています。

速度と応答性を求めている場合は、回答者をViewFlipperにすることができます。一意のアクティビティを定義し、機能を使用するときは、ビューを変更するだけです。アプリ全体が最初に読み込まれ、Dalvikが必要になるまでメモリに残ります。非常に複雑な例は、オープンソースアプリastridのコードにあります。

于 2009-05-05T06:49:06.413 に答える