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

액티비티(텍스트뷰) 불러오는 속도가 느립니다.

0 추천
로그로 확인한 결과 로딩하는 액티비티에 텍스트뷰가 많이 세팅 되어 있어서 그런것 같습니다.

그 액티비티에서 세팅 하는 텍스트뷰가 총 36개 인데요.

이것을 좀더 빠르게 불러올 수 없을까요?

예를 들면 현재 소스상에서 텍스트를 세팅하는데 레이아웃 상에서 먼저 텍스트를 넣으면 로딩이 빠르다던지..

아니면 소스상에서 세팅을 하더라도 좀더 빠르게 세팅 하는 방법이 있다던지...

또 하나 더 질문이 있다면 텍스트뷰를 많이 세팅 하다보니 메모리도 많이 잡아먹더라구요.

텍스트 뷰에 스타일도 주고 색상도 줘서 그런지는 몰라도 해당 액티비티만 들어가면 메모리가 엄청나게 늘어납니다.

메모리 소모도 적게 할 수는 없을까요...?

굇수분들의 답변 기다리겠습니다!
익명사용자 님이 2015년 6월 11일 질문
와 어떤걸 하시는데 텍스트뷰가 36개나 필요한가요?
레이아웃 안에 크게 레이아웃 12(12달 표현)개를 주고 그 안에 각각 텍스트뷰를 3개씩 넣어서 각 뷰에 텍스트를 다르게 보여주거든요..ㅠㅠ

1개의 답변

0 추천
개선을 고민하기전에

텍스트 값 로딩하는 루틴 다 주석 처리하고나서 과연 빠른지부터 확인해야할 것 같은데요.
익명사용자 님이 2015년 6월 11일 답변
텍스트뷰 세팅이 느린것 보다 액티비티 불러오는게 빠른지를 먼저 확인해보란 말씀이시죠?
스플래시 쪽을 수정 중이라 바로 확인을 못했었네요. 죄송합니다.
지금 확인해본 결과 확실히 텍스트뷰를 세팅 할때와 안할때 액티비티 불러오는
속도가 확연히 차이가 있습니다.
로그로 디버그도 찍어본 결과 텍스트뷰 세팅을 하고 넘어가는 부분에서 뚝뚝 끈어지는걸 확인 했습니다..
텍스트뷰를 세팅할 때 느려지는 경우는 없는건가요?
그렇다면..순수 데이터 올릴 때 느려지는건데,
뚝뚝 끊어지지 않고 36개를 짧은시간에 한다는게 기기마다 차이도 많을것이고요.
사실 지금 뚝뚝 끊어진다고 말은 하지만,
사실 시간 재보면 불과 1~2초일텐데(이게 크지만)
절대 시간의 총량을 36으로 나누면 사실 긴시간은 아니라고도 할 수 있습니다.
방법은
텍스트 로딩을 onCreate같은데서 사실 무식하게 하고 있을텐데
다 빼고요.
온크리에이트 끝부분에서 비동기로 (스레드든, 메시지든) 텍스트 로딩하게 해주면,
체감 성능이 끊어지는 것은 좀 막을 수 있지않을까 싶습니다.
정확한 판정이야 코드를 보고(얼마나 버벅이게 짰는지), 그리고 목적을 보면 더 좋겠지만,
개론적으로는 저렇습니다.
그리고...그런 고급 기법쓰는게 머리아프다면,
프로젝트 복사해두고, 사본에다가 일단 레이아웃에 다 하드코딩 박아 넣어봐야죠. 빠른지. 그게 프로그래머가 할일 아니겠습니까? ㅎ
비동기로 해보는걸 지금 테스트 해보고 있습니다...ㅠㅠ 지식이 짧아 시행착오가 많네요... XML에 설정 하는거(글을 쓴다던가 백그라운드를 준다던가) 보다 소스로 하는게 더 빠르다는 말을 본거 같아서요.. 답변 감사합니다!
코드로하는게 빠르다...는 아니고,
원론적으로는 xml은 이미 한번 컴파일되어서 VM이 바로 로드하면 되는 상태로 구성(달빅바이트코드)되므로
코드로 실시간 동적 구성하는 것보다 느리다고 할 수 없습니다.
다만 코드로 구성하는 것도 생각보다 느리진 않는 정도..라고 보는게 맞습니다. 고정 문장이면 그냥 개발 환경에 맡기세요. 아직 다른 신경써야할 부분이 많으면 언뜻 지나다가 들은 불분명한 정보에 기대어 프로젝트를 수행하는 것 자체가 리스크입니다. 해당 출처에가서 성능 측정결과를 요구하거나 직접 성능 측정해봐야하죠.
프로그래머는 일단 응용 과학자라고 보면 되고, 관찰과 직접 경험등의 사실에 기초한 로직을 짜내야하는 사람입니다. 추정으로하면...도박사나 점쟁이죠. 화이팅.
로그 돌려가면서 이것저것 시도해보고 있습니다.. 좀 처럼 답이 안나오네요..ㅠㅠ
화이팅!!
열심히 하는 것 같아서...(고급 기법 설명하기는 글이라는 제약으로 하긴 애매하고, 코드 짜주긴...좀 그래...)

그 비동기 있죠?
한번에 텍스트 하나만 비동기로 올리도록 짜고,
각 비동기가 끝날 때마다 다음 비동기로 차례로 체인 처럼 계속 하나씩 다음걸 호출하게 무식하게 해보세요.
화면에 차례대로 다다다다 나오겠지만, 체감은 훨씬 나아질겁니다.
이게 되면 혼자 좀 더 고급스럽게 짤 수 있을겁니다. 나중에.

-
아니면 onResume이나 onStart에서 로딩 한방에 비동기로해도...
잘 될 듯? ㅋ
...