마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Activity 이동 시 rootActivity를 제외한 나머지 스택 종료하는 방법..

0 추천

 

우선 앱을 구동하면 MainActivity가 실행됩니다(root Activity)

여기에 A메뉴로 이동 후 목록화면인 A1에서 상세화면 A2로 이동합니다.

A2에서 BACK를 누르면 히스토리 Back 하기 때문에 A1화면이 나옵니다.

A2에서 하단 메뉴를 눌러 B1또는 C1화면으로 이동 후 BACK을 누르면 A2화면이 나옵니다.

 

여기서 제가 원하는 것은

어느 Activity에서든 하단 메뉴를 눌렀을 때 액티비티 히스토리 스택이 clear되고 BACK키를 누르면 메인 액티비티로 이동이 되는 로직을 구현 하고 싶은데요

하단 메뉴를 눌렀을 때 finish() 후 startActivity하면 A1->A2와 같은 2개 이상의 Activity가 구동되어 있을 경우에는 원하는 대로 작동이 안되더라구요


      tempIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      tempIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      android:clearTaskOnLaunch="true"


도 시도해 봤는데 원하는 결과가 나오지 않습니다.

 

만약 stack에 쌓여있는 activity를 확인하여 종료해 줄 수 있는 코드가 있다면 그 걸 사용하면 될 것 같은데 어떻게 해야할지 잘 모르겠네요..

도움 부탁드립니다, 감사합니다.

까먹지 (3,960 포인트) 님이 2013년 10월 10일 질문

1개의 답변

+1 추천
인텐트에 FLAG_ACTIVITY_NO_HISTORY 설정해서 A,B 액티비티 호출하세요.
whitesnow (8,920 포인트) 님이 2013년 10월 11일 답변
HISTORY는 남기되, 하단 메뉴로 메뉴 이동시에만 히스토리 스택을 삭제하기를 원했거든요.

각 Activity에 Activity 객체 생성해서 null 체크 하여 finish(); 처리 하였습니다.
public static Activity aAct = this;
if(AActivity.aAct != null) AActivity.aAct .finish();
...