2017-05-08 2 views
0

アップデートを開始した後、ユーザーからクラッシュレポートが届いていました。わずかなユーザーしかこのクラッシュを報告していません。後で、ユーザーは、彼がアプリを離れるときにクラッシュするだけで、それを戻してボタンを押すと言いました。マルチタスク時に自分のアクティビティがゴミにならないようにするにはどうしたらいいですか?

元々、アプリケーションがマルチタスキングしていると、アンドロイドは単にバックグラウンドで実行していると思っていました。私の驚いたことに、Javaガベージコレクタが起動し、onDestory()を呼び出すアクティビティが破損しているようです。これが呼び出された後、別のオブジェクトへの参照がnullになるため、「その」ボタンが押された後にアプリケーションがクラッシュする(nullエラー)。

マルチタスク中にアンドロイド活動が破壊されるのを止めるにはどうすればよいですか?なぜ私の活動は破壊されていますか?

答えて

1

いいえ、あなたの活動がバックグラウンドで破壊されるのを防ぐことはできません。

これは、「アクティビティを保留しない」開発者向けのオプションです。あなたの活動はonSaveInstanceStateに州を保存し、onCreateまたはonRestoreInstanceStateに復元する必要があります。 「do not keep activities」を有効にすると、それらのメソッドが正しく機能しているかどうかをテストできます。あなたのアプリが「活動を続けないでください」と動作しない場合、あなたのアプリは動作しません。

ガベージコレクタはこれとは関係ありません。 Androidフレームワークは、アクティビティがいつ破棄されるかを決定し、onDestroyを呼び出します。アクティビティーは参照がなくなるとガベージ・コレクションの対象となります。

関連する問題