外部のアクティビティ(ブラウザ、ギャラリー、カメラ)にインテントを送信すると、システムがアクティビティを再現することがあります(いつ、なぜかはわかりません)。たとえば、私のアクティビティには次のボタンがあります。
button.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com");
startActivity(browserIntent);
}
});
ボタンを押してgoogle.comにアクセスし、戻ると-アクティビティが再作成されます(onCreateが呼び出されます-これがレクリエーションを検出する方法です)。一般的に、これは問題ありません。Androidは、メモリが不足している場合に、スタックの最上位にないアクティビティを閉じることができると聞きました。しかし、この動作に関連する問題があります。アクティビティが再作成されると、クラスフィールドの一部がnullになるため、アプリがクラッシュします。
このようなクラッシュを回避するためのベストプラクティスは何ですか?