2013-10-23 2 views
10

모든 활동에 구현하는 것이 좋은지 알고 싶습니다 onBackPressed()finish() 기능이 있습니까? 또는 실용적이지 않고 그것을 수행하는 것이 좋지 않습니까?Android OnBackPressed finish()?

그렇지 않은 경우, 모든 활동에서 SingleInstance (응용 프로그램을 더 느리게 만듭니다)을 입력하고 매니페스트를 입력하는 것 이외의 다른 옵션은 있습니까?

감사합니다.

+1

onBackPressed()는 우리가 오버라이드하지 않을 때까지 자동으로 액티비티가 완료됩니다. – SilentKiller

+0

SilentKiller가 맞습니다. [백 스택은 "마지막으로 처음 사용]"으로 작동합니다. (http://developer.android.com/guide/components/tasks-and-back-stack.html) – AlexBcn

+0

@SilentKiller, didn 그거 알아. 감사합니다. – user2902515

답변

10

우선 하드웨어 뒤로 버튼 자체는 finish() 메서드를 호출합니다. 액티비티에서 onBackPressed() 메서드를 정의하면 다시 버튼을 누를 때 onBackPressed() 메서드가 호출되기 때문에 backButton의 기본 동작을 재정의한다는 의미입니다.

이제 활동의 단일 인스턴스를 만들지 여부는 요구 사항에 따라 달라집니다. 스플래시 화면은 앱이 시작될 때 한 번만 표시되며 백 스택에서이 활동을 유지할 필요가 없으므로 단일 인스턴스로 만들 수 있습니다. 매우 자주 사용하려는 활동은 단일이 아니어야합니다. 그렇지 않으면 희귀 한 활동을 단일 인스턴스로 만들 수 있습니다.

자세한 내용은 Back Stack Documentation을 통해 확인하십시오.

표준이며 'singleTop'은 여러 활동 인스턴스를 인스턴스화 할 수 있으며 인스턴스는 동일한 작업을 유지합니다. 'singleTask'또는 'singleInstance'의 경우 활동 클래스는 싱글 톤 패턴을 사용하며 해당 인스턴스는 새 작업의 루트 활동이됩니다.

+0

일부 사용자는 인 텐트를 열 때 플래그를 사용합니다. 그것을 할 수있는 좋은 방법입니까? 그렇다면 플래그 중 어느 것이 내 필요에 적응해야합니까? 나는 여러 가지 활동을 열어보고 싶지 않고 종종 배경에 머물러 있다는 것을 알게됩니다. 추억 : \ – user2902515

+1

귀하의 요구 사항에 따라 다릅니다. 기본적으로 활동은 플래그를 사용하여 수동으로 삭제하거나 프로세서가 백 스택에서 삭제하지 않는 한 백 스택에 남아 있습니다. –

+0

설명서에서 올바른 플래그를 얻으려고하는데 알아 내지 못합니다. 이미 열려있는 경우 활동을 지우는 플래그 만 원합니다. 내가 보는 모든 것은 새로운 것을 열 때 모든 활동을 취소하는 깃발이다. – user2902515

0

우리는 종종 finish() 을 사용하고 있기 때문에 애플리케이션 요구 사항에 따라 다르지만 Android 기기의 라이프 사이클도 관리 할 수 ​​있습니다.

일시 중지 및 재개 방법을 사용하는 것이 좋습니다.

관련 문제