2012-06-29 2 views
9

system.exit (0)을 사용하면 안됩니다. 튜토리얼을 많이 읽었는데 왜 응용 프로그램을 종료하는 것이 좋지 않은지, finish()를 사용하는 것이 더 나은 대안이지만 매우 희귀 한 경우에는 내 기본 질문 인 보다 더러운 해결 방법을 사용하면 안드로이드 장치 나 장치의 어떤면을 사용합니까?android의 System.exit()

답변

9

짧은 대답 : 아니요

긴 대답 : 아니, 그것은 장치 또는 장치의 모든 측면을 해가되지 않습니다. 그냥 메모리에서 응용 프로그램을 제거하고 사용되는 모든 리소스를 정리합니다. 파일이 열려 있으면 파일이 손상 될 수 있지만 파일 시스템은 손상되지 않습니다. Android는 현재 사용하고있는 모든 리소스 (GPS, WiFi 등)를 해제해야하지만 정의되지 않은 상태 일 수 있습니다. System.exit()의 효과를 app-crash :와 비교하면 기기에 영향을 미치지 않습니다.

1

System.exit(0) 응용 프로그램의 "기본"메서드 외부에서 호출하는 것은 다음과 같은 이유로 권장되지 않습니다.

  1. 코드 재사용에 장애가됩니다.

  2. 단위 테스트를 어렵게 만듭니다. 예를 들어, 일부 테스트에서 오류 처리를 수행 할 때 코드에서 System.exit을 호출하면 System.exit(0)에 대한 테스트가 종료됩니다.

+0

나는 장치 나 메모리에 미치는 영향에 대해 알고 싶습니다. – Altavista

+0

대답은 그 의미를 명확하게 전달합니다. 그것은 당신의 장치에 전혀 해를 끼치 지 않을 것입니다. 그것은 단지 응용 프로그램의 단위 테스트를 어렵게 만듭니다. –

1

기기를 손상시키지 않습니다. 유일한 까다로운 점은 Android가 비동기식 인트로 브로드 캐스트/수신 아키텍처로 인해 앱을 곧바로 사용할 수 있다는 것입니다. 앱의 활동이 듣는 내용을 방금 혼동했다고 가정 해 보겠습니다. 그런 다음 종료합니다. 그러나 안드로이드는 방송을 처리하기 위해 앱을 다시 생기게 할 것입니다.