SKMLauncher·SKMLauncher2 · UI와 제품 상태 — 상세 구조도
기준 커밋:
1398d109c391c4044cae26d0e9aea4d3f08d9670. 도식은 기존 구현을 설명한다. 제품 이미지 설치·실기기 성공을 증명하지 않는다.
두 Gradle 앱은 같은 applicationId — 제품 선택 변형을 구분
SVG 원본 크게 열기 · Mermaid 원본 · 모듈 분석 본문
읽는 순서와 연결 의미
행은 책임·실행 경로별 묶음이며 별도 프로세스라는 뜻은 아니다. 같은 행의 인접 연결은 화살표로, 행을 넘거나 떨어진 상자 사이 연결은 동일한 E 번호의 출력·입력 포트로 표시한다. 아래 표는 방향과 의미를 모두 풀어 쓴 것이다. 그림의 코드 파일명을 눌러 저장소로 이동하는 기능은 없으며, 아래 경로로 지정 커밋을 조회할 수 있다.
| 연결 | 출발 → 도착 | 동작 | 종류 |
|---|---|---|---|
| E01 | SplashActivity → Activity / ViewModel | 화면 전환 | 호출·명령 |
| E02 | Activity / ViewModel → domain Repository | 동작 요청 | 호출·명령 |
| E03 | domain Repository → DeviceControlResolver | resolve | 호출·명령 |
| E04 | domain Repository → DeviceAgent | sendModuleCommand | 호출·명령 |
| E05 | DeviceAgent → onModuleCallback | 상태 알림 | 결과·이벤트 |
| E06 | SKMLauncherApp → onModuleCallback | callback 등록 | 호출·명령 |
| E07 | onModuleCallback → UI state / repository | 상태 갱신 | 결과·이벤트 |
| E08 | UI state / repository → Activity / ViewModel | UI 반영 | 결과·이벤트 |
구성요소별 책임과 코드 근거
| 상자 | 구성요소 | 책임·상태 | 지정 커밋의 소스 경로 |
|---|---|---|---|
| N01 | SplashActivity | HOME / MAIN 진입 / Init / Stay / Home 선택 | apps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/ui/splash/SplashActivity.java |
| N02 | Activity / ViewModel | AirClear·Home·Schedule 등 / LiveData / UI event / Handler | apps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/ui/airclear/AirClearViewModel.java |
| N03 | domain Repository | 청정·이동·설정·오류 등 / method / class Bundle 구성 | apps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/data/repository/AirCleanerRepository.java |
| N04 | DeviceControlResolver | connected 검사 / getService → IDeviceControl | apps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/data/common/DeviceControlResolver.java |
| N05 | SKMLauncherApp | Application connectDeviceControl / UI handler + worker thread | apps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/ui/SKMLauncherApp.java |
| N06 | onModuleCallback | 배터리·오류·LLM·예약·이동 / method 분기 | apps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/ui/SKMLauncherApp.java |
| N07 | UI state / repository | worker 결과 갱신 / UI handler·LiveData 소비 | apps/SKMLauncher/app/src/main/java/com/sk/airbot/skmlauncher/ui/SKMLauncherApp.java |
| N08 | DeviceAgent | IDeviceControl 서버 / 기능 상태 callback | apps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/DeviceAgent.java |
| N09 | Launcher2 WssRepository | WSS 화면·계약 / SDK·서버 버전 함께 확인 | apps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/data/repository/WssRepository.java |
| N10 | Launcher2 WifiRepository | Wi-Fi 상태·설정 / Android Wi-Fi API | apps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/data/repository/WifiRepository.java |
| N11 | ExecutableScheduleManager | 청정·상호작용·WSS 일정 / Handler delayed runnable | apps/SKMLauncher2/app/src/main/java/com/sk/airbot/skmlauncher/data/model/executableSchedule/ExecutableScheduleManager.java |
| N12 | Launcher2 추가 화면 | Password / Guide / Streaming / MovementPause | apps/SKMLauncher2/app/src/main/AndroidManifest.xml |
해석 경계와 변경 시 검토
- 두 Launcher를 동시에 설치하는 제품 구성이 아니다. 같은 package의 선택은 외부 제품 설정에서 확인한다.
- Application worker·MediaPlayer·activity stack 수명은 개별 lifecycle 정리와 함께 검토한다.
- UI 상태 갱신은 실제 장치 기능 완료의 대체 증거가 아니다.