이것이 강제 종료의 예상되는 동작이라고 생각합니다. 사용자가 예외 상황을 통보하면 시스템은 가능한 한 최근 상태, 즉 마지막으로 수행 한 활동에 최대한 가깝게하려고 시도합니다.
이 동작을 원하지 않는 이유는 모르겠지만 충돌로 인해 작업이 다시 시작되고 즉시 onCreate를 종료한다는 인식 방법을 찾아야 할 수도 있습니다.
편집 :
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();
}
});
}
}
당신이 Test2를에있는 버튼을 눌러
는, 예외가 발생합니다 : 난 그냥 함께 테스트 응용 프로그램을 넣어. Android는 강제 종료 대화 상자를 표시하고 대화 상자에서 확인을 클릭하면 다시 테스트로 이동합니다. 그것이 기본 동작의 의미입니다.
이 문제를 해결하는 가장 좋은 방법은 예외를 throw하지 않도록 앱을 수정하는 것입니다.
마지막 수단으로 캐치되지 않은 예외를 처리하기위한 처리기를 추가 할 수 있습니다 (uncaughtExceptionHandler). 이렇게하면 강제 종료 대화 상자가 처음부터 표시되지 않으므로 원하는대로 수행 할 수 있습니다.
감사합니다 Marya ... 이것은 Android 애플리케이션의 기본 동작이 아닙니다. 샘플 응용 프로그램을 시도하고 충돌이 발생하면 응용 프로그램이 종료됩니다. 나는 다른 간단한 응용 프로그램에서 사건을 시뮬레이션하려고 시도하고 "완전히"충돌합니다. 나는 애플 리케이션의 재발견을 일으킬 수있는 포인터에 대한 포인터를 찾고 있었다. – bschandramohan
그리고 "이유"와 관련하여 활동이 다시 시작될 때 응용 프로그램의 상태가 좋지 않아 현재이 모든 활동에 대한 코드의 잘못된 상태를 처리하고 싶지 않습니다. 앱을 닫고 acra/marketplace에서 나를 예외로보고하도록 허용하는 것이 더 나은 것 같습니다. – bschandramohan
수정 사항보기 ....... –