오늘 한 일
- Kotlin 앱개발
Android Task Stack 공부
Task
: 사용자가 작업할 때 Activity의 콜렉션
Task Flow
기기 홈 화면: 대부분의 앱을 실행할 수 있다
→ MainActivity 실행 or Task to foreground
액티비티 실행
→ 이전 액티비티의 상태를 스택에 유지하며,
새 액티비티가 스택에 push 된다
back 실행
→ 현재 액티비티가 스택에서 pop & destroy 되며,
이전 액티비티가 스택의 focus를 받게된다
Background & Foreground
background
: 다른 앱 실행 or 홈 화면 이동
⇒ 액티비티가 모두 stopped 된다
⇒ 앱 고유의 백스택에 여전히 stopped된 액티비티 정보가 유지
Activity Instance
백스택의 액티비티는 재배열되지 않으므로,
액티비티를 다시 호출하면, 이전의 액티비티 인스턴스를 실행하는 것이 아닌
새로운 액티비티 인스턴스가 백스택에 푸시되어 사용된다
but, 여러 개의 액티비티 인스턴스를 만들고 싶지 않은 경우에 세팅해줄 수 있다
Task Managing
default: 순서에 따라서 동일한 task의 백스택에 액티비티를 넣어 관리한다
variant: <activity>
속성 명시, Intent
플래그 활용
like ) Activity가 시작될 때 백스택의 맨 위에 인스턴스가 생성되는 대신 기존 인스턴스가 앞으로 나오도록
다양한 용례
taskAffinity
: 동일한 Task 임을 설정
기본적으로 한 앱 내에선 하나의 task를 가지고 있다
따라서 아무 지정을 안해주면 <application>
의 taskAffinity를 따른다
액티비티 속성 in Manifest.xml
launchMode
: Activity를 실행(런치)할 때 Intent의 설정
standard
: 디폴트모드
호출한 task에 새 인스턴스 생성 → intent로 이동
⇒ 여러번 초기화 가능
singleTop
: standard + 연속 인스턴스 방지
스택의 탑에 동일한 액티비티의 인스턴스가 있다면,
launch 요청 → 탑에 있는 액티비티의 인스턴스 사용
singleTask
: 1 task 1 activity
시스템이 인스턴스를 만들 때, 새로운 task에 만들거나 기존의 task에 만들게 되는데
액티비티의 인스턴스가 이미 있다면, 그 인스턴스를 사용
기존에 인스턴스 위에 쌓여있던 다른 액티비티의 인스턴스가 다 폐기된다
⇒ 내 MainActivity에 적용해야할 인텐트
singleInstance
: 1 activity at all
시스템이 1개의 인스턴스만 관리하며
이는 인스턴스가 task에 종속되어있다는 말과 같다
singleInstancePerTask
: singleTask + 처음 실행을 시키는 root 액티비티에 의해서만 실행
여기서 의문
task가 달라지면 뭐가달라지지? → 묶어서 관리 용이
task마다 백스택을 가지고 있다
→ taskAffinity를 통해 하나의 앱에서 task들을 관리할 수 있다?
결론: 해당 Task를 떠나면 모든 Task를 삭제하기 Issue
⇒ finishAffinity
로 해결
마무리
1__ 요새 개발을 계속 병행하려고 했는데 너무 피곤하다
그냥 넉넉히 일월화수 4일동안 개발은 쉴 예정이다
2__ 실비보험
실손의료보험(실비보험): 질병 or 상해로 치료시 보험가입자에게 발생한 실제의료비
를 보상하는 상품
진료비 계산서를 보면 크게 급여(본인부담금 + 공단부담금)와 비급여라는 항목이 있다
급여 | 급여 | 비급여 |
---|---|---|
본인부담금 | 공단부담금(자동변제) | 비급여비용 |
실제의료비
: 본인부담금 + 비급여항목
실손의료보험이 보장하는 것은 [ 본인부담금 + 비급여항목 ]을 보장한도(2023년 현재 5000만 원)안에서 자기 부담금(급여20% or 비급여30%)을 제외한 나머지를 보상해주는 것이다.
예시: 본인부담금 100만원 + 비급여비용 700만원(총 800만원)
⇒ 결과적으로 내야할 돈: 20만 + 210만 = 230만원