와챠의 우당탕탕 코딩 일기장
Android 12 Splash + 앱 시작 시간 공부 본문
Android12부터 SplashScreen API가 추가 되었다길래
이에 대해 자세히 공부해보려고 한다.
이 스플래시 화면 작동 방식은
콜드 스사트나 웜 스타트 시 앱이 준비가 될 때까지 스플래시 화면을 보여주는 것이다.
핫 스타트 중에는 스플래시가 작동하지 않는다.
(쉽게 말하면 앱이 준비할 게 좀 있을 땐 스플래시를 보여주고,
준비가 다 된 상태면 스플래시를 안 보여준다는 것이다.)
그렇다면 콜드, 웜, 핫 스타트란 무엇일까?
잠깐 알아가보자!!(공식 문서)
앱은 아래의 3가지 상태 중 하나에서 시작한다.
- 콜드 스타트
- 핫 스타트
- 웜 스타트
콜드 스타트
앱이 처음부터 시작한다.
시스템과 앱이 다른 시작 상태보다 더 많은 작업 실행되므로
=> 시작 시간 최소화 어렵다.
여기서 잠깐
콜드 스타트 시작 시 시스템이 하는 일:
- 앱 로드 및 시작
- 시작 직후 앱의 빈 시작 창 표시
- 앱 프로세스 만들기
핫 스타트
시스템이 활동을 포그라운드로 가져오기만 하면 됨
애플리케이션의 모든 활동이 아직 메모리에 있음.
=> 콜드 스타트보다 간단, 오버헤드 낮음.
콜드 스타트와 동일하게 시스템 프로세스가 앱에서 활동 렌더링을 완료할 때까지 빈 화면 표시
웜 스타트
콜드 스타트 작업 일부 포함 + 핫 스타트보다 더 많은 오버헤드
콜드 스타트만 앱이 처음부터 시작하고,
나머지 두 상태(웜, 핫 스타트)에서는 시스템이 실행 중인 앱을 백그라운드에서 포그라운드로 가져오는 것이다.
따라서 시간이 가장 많이 걸리는 콜드 스타트를 가정해 최적화를 진행한다.
트위터 앱이 생각났다.
트위터 앱을 처음 시작할 때는 스플래시를 1초정도 보여는 주는데,
앱을 종료한 뒤 바로 앱을 실행했을 때는 스플래시 화면이 엄청 짧거나, 아예 보이지 않았다.
트위터 하면서 이런 점이 참 편리하다고 이런 배경이 있었다니 신기하다^___^!!
그럼 이제 이 스플래시는 어떻게 만드는지 살펴보자
...gjf 겁나 쉽네
Android 12부터 제공되는 Splash는 아래의 스플래시 모습을 지원해준다.
- 1: 앱 아이콘
- 벡터 드로어블이어야함. 정적/애니메이션
- 기본: 런처 아이콘
- 2: 아이콘 배경
- 선택사항
- 적응형 아이콘참고
- 3: 마스크 처리
- 적응형 아이콘과 마찬가지로 전경의 1/3이 마스크 처리됨
- 4: 창 배경
- 단일 불투명 색상으로 구성
themes.xml에서 아래 아이템들을 추가해주면 된다...... 짱 간단~
<!--전체 배경색-->
<item name="android:windowSplashScreenBackground">@color/yellow</item>
<!--가운데에 나오는 로고 아이콘 이미지-->
<item name="android:windowSplashScreenAnimatedIcon">@drawable/ic_launcher_foreground</item>
<!--스플래시 표시 기간:ms-->
<item name="android:windowSplashScreenAnimationDuration">1000</item>
<!--로고 아이콘 뒤의 원 색깔-->
<item name="android:windowSplashScreenIconBackgroundColor">@color/green</item>
그동안은 SplashActivity를 따로 만들고, ScheduledExecutorService를 사용해 스플래시 화면을 항상 1초만 보여주는 방식을 사용하고 있었는데,
이렇게 스플래시를 작성하는 쪽이 더 효율적이고 사용자도 불편해하지 않을 것 같다.
하지만...........
minSdk가 31 이상부터 사용 가능하기 때문에....
전에 포스팅했던 방법대로 사용해야 할 것 같다.내 폰은...... 30버전이라 안 돌아감ㅋㅋ
https://min-wachya.tistory.com/134
보다가
android:exported="true"
이게 무슨 뜻인지 궁금해서 찾아보니까 다른 앱에서 접근할 수 있으면 true 없으면 false로 설정하는 것이라고 한다.
기본 값은 false
참고
https://salix97.tistory.com/m/94
https://lanace.github.io/articles/right-way-on-splash/
https://codechacha.com/ko/android-12-splash-screens/
'코딩 일기장 > Android(Kotlin)' 카테고리의 다른 글
갤러리에서 가져온 이미지가 회전되어져 있을 때(ExifInterface) (0) | 2022.01.31 |
---|---|
Spinner 설정 (0) | 2022.01.25 |
[Android/Kotlin] recyclerview drag and drop/swipe 기능 만들기 (10) | 2021.08.26 |
[안드로이드] draggable(movable), clickable view 만들기/onTouch, onClick Listener 동시에 달기(밀리의 서재의 그것) (0) | 2021.08.16 |
[안드로이드] 이미지에서 색상 추출(Palette), toolbar 커스텀 (트위터 따라하기) (0) | 2021.08.15 |