2011-02-11 1 views
0

私はアクティビティAからBへのインスタンスを作成し、次にアクティビティBでアクティビティAの別のインスタンスを作成します(私は以前のAを履歴に残したい)。私はインスタンスを作成し続け、アクティビティA - > B - > A - > B - > A .....の履歴スタックを持ち、20回後、システムはより多くのメモリを必要とするように見え、最初のアクティビティA 、次にB(それはログからonDestroy()を呼び出します)...それぞれのアクティビティを作成するたびにこのシナリオでは私は決して記憶上の問題はありません。しかし、私が突然大量のメモリを必要とする画像がたくさんあるアクティビティCを作成した場合、メモリ不足エラーが発生します.VMは70kバイトを割り当てようとしません。Android:無限のアクティビティのときにメモリ不足のエラー?

システムがアクティビティをいつ終了させるかは誰にも分かりますか?それは毎回1回の活動しか殺しませんか?アクティビティCを開始する前に、システムでより多くのメモリを使用できるようにするにはどうすればよいですか?これにメモリリークがありますか?どんな助けもありがとうございます。

答えて

1

Androidは、メモリが要求されない限り、活動を殺しません。彼らは単に記憶に残り、一時停止します。アクティビティAからBに切り替えて戻っている場合、Androidは単に表示されているものとonResume()dを変更しているだけです。これらは殺されていません。アクティビティCのメモリエラーはおそらくC内ではまったく問題です。あなたの状況によっては、AndroidManifestを変更してCを直接テストすることは簡単かもしれません。同じ結果を得る可能性が高いです。 FYI .. call finish()を呼び出して、アクティビティを手動で終了し、リソースを解放します。

+1

申し訳ありませんが、私はこの質問を明確にしませんでした。私は実際にBからAへの別の新しいインスタンスを作成し、スタックツリーにアクティビティを追加し続けます。私が20回まで積み重ねた後、システムはより多くの記憶が必要なように見え、FIRST活動(A)を殺すと、さらに1活動を加えると、SECOND活動(B)を殺すでしょう。スタックに20個のアクティビティを追加する前に。 – nickyfantasy

+0

heheh ..私が読んでいることは、「Out of Memoryにつながる(曖昧な目標を持った)本当に珍しいケースがありますが、Cは普通に動作します」あなたは正しい、質問は明確ではない - あなたの問題は何ですか?スタックトレース全体とエラーを含めると役立ちます。 – DJC

+0

私の場合、スタックの一番下にあるアクティビティは殺されていません。アプリがメモリからクラッシュするだけです。 :( –