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

Activity와 Fragment에의한 화면 설계 질문입니다.

0 추천

안녕하세요. 

저번에 자마린으로 만든 어플이 메모리문제로 골치를 썩어서 네이티브 개발은 거의 처음이라 제대로 알아보고 시작하려고 합니다.

아래와 같은 레이아웃의 어플리케이션을 만들고자 합니다.

헤더에 메뉴(Navigation Drawal Activity) 바텀에 매뉴(Bottom Navigation Activity)로 화면 이동을하고. 가운데 바디부분은 화면에따라 웹뷰를 놓거나 탭뷰를 놓거나 바디 내용은 메뉴에 따라 다 다릅니다.

제 이미지로 엑티비티 = 하나의 화면, 이라는 인식이 있어서...Navigation Drawal Activity 안에 Bottom Navigation Activity를 넣거나 또는 반대로 하는게 좀 이상하다고 생각했습니다.

그리고 엑티비티는 가급적 늘리지 않는게 왠지 성능상 좋을것 같다는 생각이 들어서...제가 생각하고 있는게 진짜인지 어쩐지 모르겠지만 아무튼 그래서 아래와 같은 방법으로 정했습니다.

Navigation Drawal Activity를 메인엑티비티로 놓고. 그 안에 Bottom 메뉴와 Body안의 뷰들은 전부 Fragment로 만들려고 합니다.

안드로이드의 뒤로가기 버튼은 대응하지 않으려고 합니다(뒤로 버튼 누르면 그냥 메인 엑티비티 닫히고 종료하는 사양으로 하려고 합니다)

근데 막상 이렇게 만들어 보니까 너무 Fragment만 남발하는 것 아닌가? 이게 정말 성능적으로 좋은건가 의문도 있고 제대로 이해하지 못하고 하다보니까 또 다 만들고나서 고생할 것 같아서 좀 이해하고 넘어가고 싶습니다.

만약 제가 현재 채용중인 방법으로(하나의 메인 엑티비티에 모든 화면을 Fragment로) 할 경우 예를들어서 메뉴 1 화면을 표시중인데 메뉴2,3,4,5,6 화면 전부의 오브젝트정보를 메모리에 넣어서 메모리 펑크의 원인이 된다거나..하지 않나 하는 걱정이 있습니다(그냥 추측)

메뉴별로(화면별로) 엑티비티를 하나씩 준비하고 메뉴 이동할때는 기본 엑티비티를 파괴하고 이동할 메뉴 엑티비티를 메인으로 한다거나 하는 방식이 나을지...

초보라 뭐가 알고싶은건지 설명이 잘 전달이 안될 것 같지만 다른분들이라면 어떻게 설계하실지 의견이 듣고싶습니다.

감사합니다.

gs낭천 (340 포인트) 님이 2018년 1월 12일 질문

1개의 답변

+1 추천
우선 메모리 문제로 Activity와 Fragment 사용을 고민하실 필요는 없습니다.

Activity나 Fragment나 똑같이 현재 화면에 보이지 않는 instance는 시스템 메모리가

부족할시에는 모두 메모리에서 내려가도록 설계 되어 있습니다.

메모리 문제로 두가지 사용을 구별하는 것이 아니라 각자가 하는 역할이 따로 있습니다.

메모리가 부족하다면 Fragment를 많이 사용해서가 아니라, 그 Fragment들을 운영하는

app 로직들이 메모리 최적화가 고려가 안되어 있다고 보는게 맞을거 같습니다.
디자이너정 (42,810 포인트) 님이 2018년 1월 12일 답변
디자이너정님 답변 감사합니다. 프로그램만 잘 짜면 엑티비티든 프래그먼트든 메모리관리에 영향은 없다는 거군요 감사합니다.
한가지 더 신경쓰이는 부분이 있는데 성능 면에서, 각 메뉴별로 화면 이동할떄마다 엑티비티 Intent, Finish하는것과 모든 메뉴를 하나의 메인 엑티비티 안에서 표시하는 프래그먼트만 바꾸는것의 성능 차이가 있을까요? 화면 이동할떄마다 엑티비티 만들고 지우고 하는게 더 처리가 무거울 것 같다는 생각은 드는데 사실상 프래그먼트도 화면 바뀌면 그떄마다 OnCreate, OnDestroy 하는 것 같아서 결국 차이없나? 하는 생각도 들어서요. 모니터로 메모리 상황이랑 디버거로 화면 이동시 처리같은거 확인하고 있는데 아직 공부 부족이라 죄송합니다.
...