안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요...
하...지긋지긋 하네요 ..ㅎㅎㅎ
문제는 이렇습니다.
여러개의 Activity를 쓰는 app입니다.
중간에 google맵이 뜨는 Activity가 있고 ....그 맵위에 여러가지를 뛰웁니다.
그리고 이 맵이뜨는 Activity에서 여러갈래로 분기합니다...
고로 이 맵Activity가 루트?Activity가 됩니다....
여러가지 이유로 이 Activity만 SingleTop 으로 런칭합니다.
다른 엑티비티는 모조리 다른 엑티비티로 넘어갈때 finish 시키지만
이아이만 그렇지 않습니다.
문제는 맵Activity -> 다른 Activity 로 넘어간다음에...
이 다른 Activity에서 프로그램 종료를 시키고 싶습니다.
finish()를 날리고. system(0)을 날리고 android.os.Process.killProcess도 날리고..
RestartPackage 도 날리지만......
다시 아이콘을 눌러서 실행하면 마지막 activity가 뜹니다.(이상한 모습으로...당연히 서버에서 팻킷을받으니까요 ㅋㅋ)
ㅠ.ㅠ
맵Activity전에 종료를 날리면 아무 문제없습니다. 모조리 finish()를 날리니까요.......
맵Activity에 static Activity를 주고 자기자신을 준 다음에 finish()도 날려봤습니다. 똑같습니다 ㅠ.ㅠ
종료할때 무슨 수가 없겠습니까? ㅠ.ㅠ 동적으로 히스토리 삭제 라던지 그런게 생각이 납니다만
맞는 지도 모르겠고....좀 도와 주십쇼.......




Intent.FLAG_ACTIVITY_CLEAR_TOP 라는게 있습니다..
자세한 내용은 휴휴휴님 블로그에서 보시구요( http://huewu.blog.me/110087045138?Redirect=Log )
Intent.FLAG_ACTIVITY_CLEAR_TOP를 사용하여 맵액티비티를 호출후에 finish() 시켜주면 됩니다.
아래는 예제 입니다.
- 다른 액티비티에서 종료 요청시
Intent intent = new Intent(this, Login.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("finish", true);
startActivity(intent);
- 맵액티비티 : OnResume 에서..
boolean finish = getIntent().getBooleanExtra("finish", false);
if (finish) {
finish();
}
이렇게 해주시면 됩니다..
아 혹시 인텐트에 값이 제대로 안들어 온다면
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
해주시면 될거 같네요