뒤로 버튼에서 액세스 할 수 없도록 안드로이드 활동을 종료하는 방법은 무엇입니까?


131

주어진 Android 활동에서 어느 시점에서 사용자를 위해 새로운 활동을 시작하고 싶습니다. 그들이 첫 번째 활동을 떠나 두 번째 활동에 도달하면 첫 번째 활동이 오래되어 뒤로 제거 버튼에서 다시 액세스 할 수 없도록 완전히 제거하고 싶습니다.

이것을 달성하는 가장 좋은 방법은 무엇입니까? 사용자가 새 활동을 시작한 직후에이 활동을 어떻게 종료하거나 제거합니까?


답변을 확인하십시오 . 나에게 도움이되었습니다.
Daniyar

답변:


235

전화 만하면됩니다 finish()

Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();

감사합니다. 한 걸음 더 나아 가기 위해 대화 창에서 새 활동을 시작하고 있습니다. 코드가 같은 방식으로 작동합니까?
JohnRock

@CaseyB 감사합니다 ..하지만 알고 싶습니다. 그렇다면 어떻게 서비스 에서이 메소드를 호출 할 수 있습니까?
swiftBoy

1
서비스에는 활동이 없습니다. 즉, 서비스가 활동 스택에 없어 다시 돌아갈 수 없습니다. 서비스에서 일부 활동을 종료하려면 myActivity.finish ();
CaseyB

3
7 년 전의 답변이지만 여전히 Android M 및 N에 유효합니다.
zeeshan

1
@juztcode onDestroy는 Android 프레임 워크에서만 호출되는 수명주기 메소드입니다.
CaseyB

106

android:noHistory="true"매니페스트에서 활동을 설정하면 멀리 이동할 때마다 스택에서 활동이 제거됩니다. 여기를 참조 하십시오



8

당신은 또한 추가 할 수 있습니다 android:noHistory="true"당신에 Activity태그 AndroidManifest.xml.

<activity
            ...
            android:noHistory="true">
</activity>

7

예, 종료하려는 활동에서 finish ()를 호출하기 만하면됩니다.


4

새로운 의도를 초기화 한 후 각 "새로운 활동"에 이것을 쓰십시오.

Intent i = new Intent(this, yourClass.class);
startActivity(i);
finish();

2

마침내, 나는 해결책을 얻었다!

내 컨텍스트는 :-활동이 파괴 될 때 소켓 연결을 끊고 싶습니다. 활동을 끝내 려고했지만 작동하지 않았습니다 . 연결을 어딘가에 유지하십시오.

그래서 나는 android.os.Process.killProcess(android.os.Process.myPid()); 내 활동을 죽이고 android:excludeFromRecents="true" 최근 활동에서 제거하는 데 사용 했습니다.


1
이 솔루션은 저에게 효과적이지만 불행히도 빈 페이지를 표시하고 소켓 연결을 닫으려면 socket.close (); .
Mehrdad

android.os.Process.killProcess(android.os.Process.myPid())활동뿐만 아니라 앱 프로세스를 종료합니다. 즉, 진행중인 모든 서비스 (백그라운드 또는 포 그라운드)도 중지됩니다.
Wrichik Basu


0

새 활동을 시작할 때 아래 코드를 사용해야합니다.

startActivity(new Intent(this, newactivity.class));
finish();
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.