2012-03-26 9 views
0

私は使用しているアプリケーションのメモリにオブジェクトを置いています。ボタンを押すと、startActivityForResultを実行してカメラアプリケーションを起動するので、そのオブジェクトに写真を添付できます。私がこれまでにテストしたすべての携帯電話/タブレットでは(完全に正常に動作しますが)、いったんカメラアプリケーションが起動すると、Motorola Droid 3(CDMA版)で何らかの理由でonDestroyが呼び出されます...写真がスナップされた後に私のアプリに戻っても、メモリに保存されているすべての変数は消去されます。誰かが私にこれをどうやって解決してくれるか教えてもらえますか?Droid 3のstartActivityForResultがアプリのメモリをクリアしていますか?

+0

あなたの活動に戻るとどうなるでしょうか、あなたは 'onCreate'を受け取りますか?あなたは 'onSaveInstanceState'を実装していますか? – dldnh

答えて

1

私は、カメラアプリケーションが、アンドロイドが一時停止したアクティビティを破壊するのに必要な十分な大きさのメモリを使用していると推測しています。あなたがこのページを見れば、

http://developer.android.com/reference/android/app/Activity.html

それはかなり明確にその可能性を示しています。

さまざまなデバイスが異なるメモリに読み込まれ、異なるメモリ量で起動するため、デバイスごとに動作が異なります。

アプリに状態を保存する必要がある場合は、onSaveInstanceState()onRestoreInstanceState()にフックすることができます。詳細については、こちらの記事で説明しています。要約で

Saving Android Activity state using Save Instance State

あなたが活動を再開したときに、状態は同じであることに依存しません。あなたがそれに依存している場合、あなたはそれを自分で処理する必要があります。

+1

私はジェフリーに同意します。バックグラウンドになるたびにあなたの活動が殺されるように準備する必要があります。また、保持しようとしている変数が容易に区切れない場合は、 'onRetainNonConfigurationInstance'を使用することもできます。 – dmon

関連する問題