Android 응용 프로그램 시작 시간 소모 분석

2560 단어 Android
Android 애플리케이션 시작은
  • 콜드 스타트
  • 난방 시동
  • 핫 스타트
  • 상기 세 가지 방식은 위에서 아래로 순서대로 가동하면 소모 시간이 줄어든다.이어서 하나하나 설명하다
    콜드 스타트
    콜드 부팅은 시스템 부팅 후 또는 어플리케이션이 시스템 킬에 의해 제거된 후 처음으로 어플리케이션을 시작합니다. 콜드 부팅은 다음 세 가지 단계를 포함합니다.
  • APP를 시작하고 APP 프로세스를 만듭니다
  • 기본 스레드 생성, 첫 번째 프레임 화면 렌더링
  • 시작할 때 만든 공백 윈도우를 그려진 activity로 바꾸고 사용자 상호작용을 시작합니다
  • 각 단계에서 수행되는 작업은 다음과 같습니다.
    1. APP 시작 및 APP 프로세스 만들기
  • APP 로드 및 시작
  • 빈 윈도우 보이기
  • APP 프로세스 작성
  • 2. 메인 스레드를 만들고 첫 번째 프레임 화면을 렌더링합니다
  • APP 개체 만들기
  • 부팅 마스터 스레드
  • MainActivity 만들기
  • inflate 페이지의view
  • 첫 화면 레이아웃
  • 최초 드로잉 수행
  • 3. 이전 단계에서 그려진 첫 번째 화면을 사용하여 첫 번째 단계에 표시된 공백 윈도우를 바꾸고 사용자의 상호작용 이벤트를 수신합니다
    핫 스타트
    열 가동은 가장 적은 시간을 소모하는 가동 방식으로, 이러한 방식은 응용 프로세스가 종료된 후에 다시 사용자에게 불러일으킨다.이 때 메모리에 응용 프로세스가 저장되어 있기 때문에 시스템은 응용 프로세스를 백엔드에서 백엔드로 옮기기만 하면 각종 초기화, inflate,layout, 렌더링 등의 작업을 할 필요가 없다.
    난방 시동
    난방 가동의 소모 시간은 상기 둘 사이에 있는데 이런 가동 방식은 다음과 같은 상황에서 발생할 수 있다.
  • 사용자가 응용 프로그램을 종료한 후에도 시스템은 이 응용 프로세스를 캐시하고 회수하지 않았다. 이때 사용자가 응용을 다시 시작하면 프로세스를 다시 만들 필요가 없지만 activity를 만들고 생명주기 방법을 다시 걸어야 한다.
  • 시스템은 메모리가 부족해서 백엔드에서 물러난 프로세스를 회수한 다음에 사용자가 이 프로그램으로 돌아간다. 이때 프로그램은 프로세스와activity를 다시 만들어야 하지만 보류된 데이터로activity를 초기화할 수 있다.

  • 시작 시간 경과 보기
  • 콜드 부팅 소요 시간은 로그를 통해 확인할 수 있으며, 어플리케이션 부팅 시 Displayed라는 소모 시간 로그가 다음과 같이 인쇄됩니다
  • ActivityManager: Displayed com.android.myexample/.StartupTiming: +3s534ms
    

    첫 번째 프레임 화면에 적용하는 데 걸리는 시간입니다.시스템 로그이지 적용 로그가 아니므로 AS에서 보려면 No Filters 를 선택해야 합니다.가끔 토탈이 있을 때가 있는데, 아래와 같다.
    ActivityManager: Displayed com.android.myexample/.StartupTiming: +3s534ms (total +1m22s643ms)
    

    이런 상황이 발생한 것은 시작할 때 하나의activity만 불러오는 것이 아니라, 예를 들어 splash 페이지도 불러오기 때문이다. 예를 들어 이전 시간은 마지막의activity 불러오기 소모 시간이고, total은 시작할 때부터 현재 페이지까지 불러오기 완료 소모 시간이다
  • adb 명령으로 볼 수 있음
  • adb [-d|-e|-s ] shell am start -S -W
    com.example.app/.MainActivity
    -c android.intent.category.LAUNCHER
    -a android.intent.action.MAIN
    

    위 - c -a 옵션과 같이 시작 후 터미널에서 다음 시간을 출력합니다.
    Starting: Intent
    Activity: com.example.app/.MainActivity
    ThisTime: 2044
    TotalTime: 2044
    WaitTime: 2054
    Complete
    

    그 중에서 ThisTime은 마지막 activity 시작 소모 시간을 나타내고, TotalTime은 모든 activity 시작 소모 시간을 나타내며, WaitTime은 AMS가 activity를 시작하는 총 소모 시간을 나타낸다.통상적인 상황에서 삼자의 관계는 다음과 같다
    ThisTime <= TotalTime <= WaitTime
    

    더욱 세분화된 시간 소모 분석은 도구를 사용하여 분석해야 한다. 정부는 AS의 Profiler, TraceView 또는 Systrace 등 해당하는 도구를 제시하여 분석해야 한다.

    좋은 웹페이지 즐겨찾기