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

안드로이드 앱종료 finish() or System.exit(); 질문입니다.

0 추천

화면구성은 액티비티a(인트로화면) , 액티비티b(로그인화면), FragmentActivity(플래그a,b,c)

입니다.

FragmentActivity화면에서 뒤로가기버튼(KeyEvent.KEYCODE_BACK)이 눌러지면

finish()를 실행하는데, 

 

제가 원하는 의도는 앱종료입니다.  

 

하지만 동작은 액티비티b(로그인화면)으로 넘어가죠. 

 

 FragmentActivity화면에서 뒤로가기버튼(KeyEvent.KEYCODE_BACK)이 눌러지면

System.exit();를 실행하면 앱종료는 커녕,

 

잠시 하얀화면에서  FragmentActivity화면으로 돌아오더군요.

 
요점, 질문은 ㅠㅠ
 FragmentActivity화면에서 finish()를 사용하여 종료를 하고싶은데,
 
라이플 사이클에 살아있는 액티비티a,b까지 종료할려면 어떻게 해야할까요..?
뇽뇽이2841 (1,120 포인트) 님이 2014년 10월 14일 질문

4개의 답변

+1 추천
앞으로 액티비티가 늘어난다는 가정하에 기본 틀은 이렇습니다.

ArrayList<Activity>객체 만드시고 A액티비티에서 B액티비티로 넘어갈때

A액티비티를 ArrayList<Activity>객체에 담습니다.

그리고 백버튼 눌려서 현재 액티비티 finish()줄때, ArrayList<Activity>객체 불러와서

포이치 돌려서 그 안에 있는 Activity다같이 finish() 해주시면 됩니다.
익명사용자 님이 2014년 10월 14일 답변
좋은 방법이네요.
중첩엑티비티 종료의 정석이네요
답변감사합니다 참고해서 구조설계해야겠네요.
ArrayList<Activity>는 어디에 저장하나요?
static 변수에 저장하는 것은 올바른 방법이 아닙니다.
어디에 저장을 하는가는 개발자 마음이겠지만, static에 변수에 저장하는것이 왜 올바르지 않을까요? 오히려 이럴때 사용 할 수 있는 것이 static변수가 아닐까 생각해 봅니다만.
context와 연관된 것을 static변수에 저장하면 무슨일이 생기는지는 구글링을 조금만 해보면 나옵니다.
절대적으로 피해야 합니다.
메모리 누수 때문인가요? 그치만, ArrayList<Activity>를
static 선언후 관리를 하였을때 어떤 상황에서 메모리 누수가 발생 할 가능성이 있는 건가요? onBackPress가 호출되었을때 모든 액티비티를 finish() 한다면 메모리 점유가 모두 undo 될거고,,
0 추천
종료하시려는 부분에 android.os.Process.killProcess(android.os.Process.myPid());  <-사용하시면 될껍니다.
익명사용자 님이 2014년 10월 14일 답변
0 추천
인트로에서 로그인으로 가거나 로그인에서 FragmentActivity로 넘어갈때

startActivity앞에 finish를 부르세요

아니면 매니페스트에

인트로,로그인 액티비티에 android:noHistory="true"를 붙이면 됩니다
alkyne (22,960 포인트) 님이 2014년 10월 14일 답변
0 추천
startActivity하기전에 intent의 flag값을 이용하는 방법은 안되나요?

 

전 보통 귀찮기에 그냥 startactivity하기전에 finish시켜주는 방법을 사용하긴 하네요.
chemkaaa (6,030 포인트) 님이 2014년 10월 15일 답변
...