これは強制終了の予想される動作だと思います。ユーザは、システムが、現在の状態、すなわち最後に働いた活動に可能な限り近づけようとしていることを確認すると、例外を通知される。
なぜこの動作が望ましくないのかわかりませんが、クラッシュのためにアクティビティが再開されたことを認識し、すぐにonCreateを終了する独自の方法を考え出す必要があります。
編集: 私は一緒に入れたテストアプリ:あなたはTest2を中にボタンを押すと
public class Activity1 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button)findViewById(R.id.button);
button.setText("test");
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Activity1.this, Activity2.class);
startActivityForResult(intent, 0);
}
});
}
}
public class Activity2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button)findViewById(R.id.button);
button.setText("test2");
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
throw new RuntimeException();
}
});
}
}
、例外がスローされます。 Androidは強制終了ダイアログを表示し、ダイアログで[OK]をクリックすると、Testに戻ります。それが私がデフォルトの動作を意味するものです。
これを処理する最善の方法は、決して例外をスローしないようにアプリを修正することです。
最後の手段として、キャッチされない例外を処理するハンドラを追加することができます。uncaughtExceptionHandler。これにより、強制終了ダイアログが最初に表示されるのを防ぐので、好きなようにすることができます。
Thanks Marya ...これはAndroidアプリケーションのデフォルトの動作ではありません。サンプルアプリケーションを試してクラッシュした場合、アプリケーションは終了します。私は別のシンプルなアプリでこのケースをシミュレートしようとしましたが、「完全に」クラッシュします。私は何がアプリの再起動を引き起こす可能性があるかについてのポインタを探していた。 – bschandramohan
「理由」に関しては、アクティビティが再開されたときにアプリケーションが悪い状態にあり、この時点ですべての自分のアクティビティの無効な状態をコード内で処理したくありません。アプリを終了し、acra/marketplaceに私の例外を報告するのが良いと思われる。 – bschandramohan
編集を参照....... –