Android의 BACK 버튼과 HOME버튼을 이용한 내비게이션 룰
2010. 8. 26. 18:19ㆍUI 가벼운 이야기
안드로이드 폰은 하드키를 이용한 내비게이션 방법으로서 HOME 버튼과 BACK버튼 두가지를 제공합니다.
HOME버튼을 누르면 HOME화면으로 이동하고, BACK버튼을 누르면 '이전화면'으로 이동을 합니다. PC의 웹브라우저에서 '이전'버튼을 매우 유용하게 사용하는 것과 같이 이 버튼을 하드키로 제공하여 매우 빈번하게 사용할 수 있게 한 것입니다.
HTC Desire
Nexus One
그런데 안드로이드 개발자 사이트를 참고해보면 HOME버튼과 BACK버튼은 버튼실행 후의 '이동위치'의 차이 외에도 중요한 차이가 있습니다.
이 차이를 언급하기 전에 간단하게 안드로이드 시스템에 관한 간단한 학습이 필요합니다.
안드로이드 시스템을 구성하는 가장 기본적인 4가지 컨셉은 Applications / Activities / Activity Stack / Tasks 라고 합니다. 각각의 개념을 제가 나름대로 의역+해석하여 간단하게 설명하면 다음과 같습니다.
그런데 3rd Party들이 만든 application을 사용해보면 이러한 룰이 잘 지켜지지도 않고 또 변형이 되기도 합니다.
즉 어떤 app들은 HOME버튼을 누르든 BACK버튼을 누르든 간에 activity를 종료하여 초기화시켜버립니다(Case-A)
또 어떤 app은 실행 후 첫화면에서 BACK버튼을 누르면 '정말 프로그램을 종료하겠냐'고 묻는 팝업이 뜨기도 합니다. 물론 이 경우 HOME버튼을 누르면 룰에따라 종료가 되지 않기로 했으니 팝업 없이 이동합니다.(Case-B)
(Case-A)의 경우 HOME버튼과 BACK버튼에 따라 activity 유지/종료시키는 것이 별 의미가 없기 때문에 룰을 지키지 않았거나, 아니면 실수를 한 것이겠죠.
(Case-B)의 경우 BACK버튼을 누를 때 '종료여부'를 묻는 팝업을 넣은 것은 '사용자가 BACK버튼을 내비게이션 용도로서 습관적으로 누르다가 현재 application에서 빠져나갈 생각이 없었는데도 막다른 activity에서 BACK버튼을 실수로 한번 더 눌러 원치 않게 빠져나가는 것을 막아주겠다' 는 친절한 생각이었을 것입니다. 즉 HOME은 '결과를 명확히 예측하고'누른 것이라고 보는 반면 BACK버튼은 현재 app 내에서 이전화면을 보고싶은 경우와 app에서 빠져나가려고 하는 경우 두가지가 있다고 보는 것입니다. (여기에서는 전자쪽을 배려한 것이지요)
하지만 결과적으로 내비게이션 룰이 들죽날죽해지는 것은 문제가 있습니다.
(Case-A)의 경우 사용을 그다지 방해할 것 같지는 않지만, 특히 (Case-B)의 경우 비일관성 자체가 상당히 짜증을 유발시킬 수 있을 것 같아 심각해 보입니다.
정도로 정리할 수 있겠습니다.
여러분들은 어떤 해법이 가장 좋아보이십니까? 혹은 또 다른 해법이 있나요?
(프로그래밍 관점에서 정확히 이해하시려면 안드로인드 개발자 사이트를 참고하세요)
-Applications :
보통 'app' 이라 표현하는 것에 해당합니다. 서로 연관성과 의미를 가지고 묶인 activities의 집합이고, Home screen 및 menu화면이라고 하는 sliding drawer 에서 아이콘을 통하여 실행시킵니다.
-Activities :
화면을 기획할 때 흔히 Key Screen이라고 하는 화면에 해당한다고 보시면 됩니다. 즉, '전화'라는 어플리케이션은
키패드화면, 전화번호부화면, 전화번호부 상세화면, 새전화번호등록화면 등의 activity들로 구성됩니다.
-Activity Stack:
android는 사용자가 각 activities를 이동할 때 이동경로를 보존하는데 이것을 activity stack이라고 합니다. 이것은 HOME을 기준으로한 경로이며 HOME보다 더 거슬러 올라가지는 못합니다.
-Tasks:
사용자가 어떤 목적을 이루기 위하여 거쳐가는 activities의 연속적 흐름을 말합니다. 여기에서 activities가 어떤 application에 속해있는지는 중요하지 않습니다.
다시 본론으로 돌아가보면....위의 내용에서 이미 언급이 됐습니다만,
HOME버튼 룰
화면간 내비게이션 즉, activities 간 이동 중에 HOME버튼을 누르면 현재의 activity가 '실행중인 상태'에서 HOME화면으로 이동합니다. 기존의 activity가 여전히 살아있으므로 다시 해당 어플리케이션을 실행해보면 이전의 상태가 그대로 보존된 화면으로 이동합니다.
화면간 내비게이션 즉, activities 간 이동 중에 HOME버튼을 누르면 현재의 activity가 '실행중인 상태'에서 HOME화면으로 이동합니다. 기존의 activity가 여전히 살아있으므로 다시 해당 어플리케이션을 실행해보면 이전의 상태가 그대로 보존된 화면으로 이동합니다.
BACK버튼 룰
그러면 activities간 이동 중에 BACK버튼을 누르면? 현재의 activity를 '종료'하고 이전의 activity로 돌아갑니다. 따라서 다시 종료된 activity를 실행시켜보면 '이전의 보던 화면'이 아닌 새로 로딩된 화면이 나오게 되는 것입니다.
그러면 activities간 이동 중에 BACK버튼을 누르면? 현재의 activity를 '종료'하고 이전의 activity로 돌아갑니다. 따라서 다시 종료된 activity를 실행시켜보면 '이전의 보던 화면'이 아닌 새로 로딩된 화면이 나오게 되는 것입니다.
그런데 3rd Party들이 만든 application을 사용해보면 이러한 룰이 잘 지켜지지도 않고 또 변형이 되기도 합니다.
즉 어떤 app들은 HOME버튼을 누르든 BACK버튼을 누르든 간에 activity를 종료하여 초기화시켜버립니다(Case-A)
또 어떤 app은 실행 후 첫화면에서 BACK버튼을 누르면 '정말 프로그램을 종료하겠냐'고 묻는 팝업이 뜨기도 합니다. 물론 이 경우 HOME버튼을 누르면 룰에따라 종료가 되지 않기로 했으니 팝업 없이 이동합니다.(Case-B)
(Case-B)팝업은 실제서비스를 보고 임의작업한 것입니다
(Case-A)의 경우 HOME버튼과 BACK버튼에 따라 activity 유지/종료시키는 것이 별 의미가 없기 때문에 룰을 지키지 않았거나, 아니면 실수를 한 것이겠죠.
(Case-B)의 경우 BACK버튼을 누를 때 '종료여부'를 묻는 팝업을 넣은 것은 '사용자가 BACK버튼을 내비게이션 용도로서 습관적으로 누르다가 현재 application에서 빠져나갈 생각이 없었는데도 막다른 activity에서 BACK버튼을 실수로 한번 더 눌러 원치 않게 빠져나가는 것을 막아주겠다' 는 친절한 생각이었을 것입니다. 즉 HOME은 '결과를 명확히 예측하고'누른 것이라고 보는 반면 BACK버튼은 현재 app 내에서 이전화면을 보고싶은 경우와 app에서 빠져나가려고 하는 경우 두가지가 있다고 보는 것입니다. (여기에서는 전자쪽을 배려한 것이지요)
하지만 결과적으로 내비게이션 룰이 들죽날죽해지는 것은 문제가 있습니다.
(Case-A)의 경우 사용을 그다지 방해할 것 같지는 않지만, 특히 (Case-B)의 경우 비일관성 자체가 상당히 짜증을 유발시킬 수 있을 것 같아 심각해 보입니다.
해법의 종류
1.원래 룰대로 BACK버튼으로 app을 종료해야 할 경우 경고 없이 빠져나온다
2.(Case B)처럼 모든 app들이 BACK버튼으로 종료를 할 경우 경고팝업을 띄워준다.
3.BACK버튼 외에 FORWARD버튼을 더 제공한다.
4.아이폰처럼 HOME버튼만 주고, BACK버튼은 activity에서 GUI로 제공한다.
1.원래 룰대로 BACK버튼으로 app을 종료해야 할 경우 경고 없이 빠져나온다
2.(Case B)처럼 모든 app들이 BACK버튼으로 종료를 할 경우 경고팝업을 띄워준다.
3.BACK버튼 외에 FORWARD버튼을 더 제공한다.
4.아이폰처럼 HOME버튼만 주고, BACK버튼은 activity에서 GUI로 제공한다.
정도로 정리할 수 있겠습니다.
여러분들은 어떤 해법이 가장 좋아보이십니까? 혹은 또 다른 해법이 있나요?