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

[안드로이드] 실제 개발자분들, 로딩 하는 데이터가 궁금합니다.

0 추천
앱을 시작하면 로딩을 하자나요.

근데 그 로딩때 보통 뭐를 하나요?

앞으로 앱을 실행하면서 시간이 좀 걸리는 작업을 미리 해두는거아닌가요?

 

제 어플이 이미지를 가져와서 띄우는 어플인데 그게 액티비티 B에서 하는거고

맨처음 보여주는(로딩하는) 액티비티는 A라고 하면

 

로딩때 A액티비티에서 B액티비티의 이미지를 가져오고 띄우는 함수를 실행하나요?
g22206 (660 포인트) 님이 2018년 7월 17일 질문

2개의 답변

0 추천
 
채택된 답변
경우에 따라서 다릅니다.

- 리소스 자동 다운로드: 게임의 경우에 레벨이 증가되어 이미지 리소스가 대거 추가되면, 미리 다운로드 받는 경우가 있습니다.

- 자동 로그인: 로그인은 SSL이나 MD5같은 암호화 모듈을 쓰기 때문에, 암호화 해서 서버로 전달하고, 서버에서 암호를 풀고 결과를 암호화해서 돌려줍니다. 게임 같은 경우에는 사용자의 캐릭터 정보와 착용 아이템 정보, 이벤트 정보, 타 사용자의 메시지 여부 등의 모든 데이터를 로그인 할 때마다 내려줍니다. 뮤직서비스나 사진 서비스의 경우 해당 사용자에 추천 컨텐츠를 서버에서 재계산해서 초기 홈에 몇십개 정도는 유저에 맞는 데이터를 내려줘야 하기 때문에, 서버상의 연산이 많습니다.

- 이벤트나 노티: 초기에 로그인 이후 이벤트나 노티가 있을 경우 이미지 데이터가 크면 다운로드 받고 띄워주어야 합니다.

- 로컬 데이터의 로딩: 로컬에 유저의 과거 히스토리를 쌓아둔다면, 이 부분을 로딩해야 합니다. 예를들어 드랍박스같은 앱이라고 한다면, 로컬에 있는 파일 중에서 변경된 게 있으면 서버와 버전을 일일이 비교해야 합니다.

- 일부 사용자가 없는 서비스의 경우 서버가 IDLE 상태에 있다가 유저가 한명 새롭게 접속하면 서버가 다시 살아나야 하는 시간이 걸릴 수 있습니다. 그런 경우에는 서버의 응답이 수초 이상 지연되는 경우도 생깁니다.

초기 로드시 앱에서 사용하는 모든 이미지를 로딩하지 않습니다. 이미지는 휴대폰 안에서는 Bitmap으로 사용하기 때문에, 실제 이미지 파일은 1메가라고 해도, 비트맵으로 화면에 뿌려줄 때는 2~30메가를 잡아 먹을 수 있습니다. 따라서 이미지를 많이 로드할 여유가 휴대폰에 없습니다. 때문에, 각 화면단위로 이미지를 다시 로드합니다.

일부 게임의 경우 스테이지에 들어갔을 때, 그 해당 스테이지에서 사용하는 이미지를 미리 로드하기는 합니다. 왜냐 하면 게임 중간에 로딩하면 짜증나거든요. 최소한 그 스테이지가 Clear 될 때까지 사용할 리소스는 모두 메모리에 올리려고 노력합니다. 그렇다 하더라도 보스 몹이 나올때는 로딩을 쓰는 식으로 메모리 부족을 막습니다.

그러나 홈은 다르죠. 앱을 실행해서 처음 띄우는 홈은 상기와 같은 앱마다 다양한 방식으로 작업이 되고, 인터넷을 통해서 이미지를 다운받는 속도보다, 다운 받을 이미지를 최초에 메모리에 올릴때 시간이 더 오래 걸릴 수도 있습니다. 필요하면 앱에 더 많은 메모리를 OS가 할당해 주는 등의 잡다한 일들이 발생하면 더 느리고, 버벅대는 것처럼 보일 수 있죠.

이런 경우에 메모리 사용을 줄이기 위해서 glide 같은 라이브러리는 픽셀하나를 4바이트로 표현하는 것은 3바이트나, 2바이트로 줄여서 로드하는 기능이 있습니다. 그런 다양한 작업들을 통해서 앱의 퍼포먼스를 높이는 것은 중요합니다.

이런 것들을 다 하려면 사실 더 많은 돈을 받고 앱을 개발하는 환경이 되어야 합니다.

기간도 짧고 돈도 작고 하니, 대충 돌아가는 앱들이 많이 유통되죠.
Will Kim (43,170 포인트) 님이 2018년 7월 18일 답변
g22206님이 2018년 7월 25일 채택됨
–1 추천
아니요. A에서 보여지는 로딩은 A에서 사용하기 위해 로딩합니다.

B는 B화면으로 이동해서 로딩합니다

로딩이 오래걸리면 progress를 돌리고요
prague (26,200 포인트) 님이 2018년 7월 17일 답변
근데 사진 가져와서 띄우는 작업이 오래걸리는데
접속하는 맨 처음 로딩때 작업을 하는게 더 낫지않나요?

보통 앱을 보면 맨처음 로딩이 젤 길어보이길래
그때 다 작업하는건 줄 알았습니다.

아니면 제 액티비티 화면 설계부터 잘못된걸까요
...