일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Android
- zwj
- Kotlin
- 완전탐색
- flutter
- 플러터
- IOS
- 플러터 동작
- Widget Tree
- 싱글톤
- Lazy
- Render object tree
- linebreak
- 자바
- dart
- 에러
- 앱아이콘 변경
- 코틀린
- 비동기 처리
- 프리즈드
- 재귀
- dfs
- Java
- 거리알고리즘
- 프로그래머스
- 초기화
- 자료구조
- 알고리즘
- element tree
- Singleton
- Today
- Total
모바일 개발하는 자바리안의 메모장
Flutter - 앱 강제 종료 본문
강제 업데이트를 구현하며 업데이트 안내 Dialog가 닫힐 때 앱을 강제 종료하는 기능을 구현했는데,,
기본적으로 dart:io에서 제공해주는 exit(0) 함수를 통해 앱을 쉽게 강제 종료할 수 있다.
하지만 이러한 방식으로 코드를 통해 앱을 종료하는 방식은 iOS, AOS 모두 권장하는 방법은 아니라고 하는데,,
안드로이드 개발자 가이드에서는 이에 대해 직접적으로 명시하진 않았으나 앱의 life cycle을 관리할 필요가 있음을 강조하며 사용자가 직접 특정한 액션을 취함으로써 앱을 종료하는 방식을 권장한다고 한다.
iOS Human Interface Guideline에는 프로그래밍 방식으로 종료하는 것이 사용자 경험을 저해할 수 있다고 명시되어 있으며, 프로그래밍을 통한 강제 종료는 지양해야한다는 내용도 함께 명시되어있다.
각 platform의 가이드라인을 인지하고 따르는게 맞지만,,,
강제 종료 구현이 불가피하다면 둘 중, AOS라도 가이드라인에 조금이라도 충족하는 아래 방식으로 종료해주는 게 좋을 것 같다.
if (Platform.isAndroid) {
SystemNavigator.pop();
} else {
exit(0);
}
SystemNavigator.pop()은 안드로이드 플랫폼에서 최상위 액티비티를 종료시키는 역할을 하며, 안드로이드의 태스크 관리 시스템 내에서 앱을 종료하는 효과적인 방법이라고한다.(iOS에서는 동작하지 않음)
exit(0)를 사용할 경우 iOS에서 심사 거절🙅🏻을 당할 수도 있다고하니, iOS는 아예 강제 종료 기능을 넣지 않는것을 추천한다..
(필자도 위 내용을 오늘에야 알고 걱정되는 마음에 강제종료 기능은 결국 빼고, dialog가 dismiss 되지 않는 방향으로 구현...)
'Flutter' 카테고리의 다른 글
Flutter - 앱 아이콘 변경 (1) | 2024.01.30 |
---|---|
Flutter - 한글 단어 단위로 line break되게 하기 (2) | 2024.01.29 |
Flutter - iOS 빌드 오류(Cocoapods) 해결 방법 (0) | 2023.10.11 |
Flutter - Widget, Element, Render Object tree (0) | 2023.05.17 |
Flutter - Single-threaded 환경에서 비동기 처리가 어떻게 가능할까 (0) | 2023.04.10 |