오늘은 개발자 옵션에 있는 기능 중에서 (액티비티 유지 안함 or 활동 보관 안함)을 알아보도록 하겠습니다.
액티비티 유지 안함 or 활동 보관 안함
기능 설명
- 사용자가 액티비티를 종료 (기존 앱을 잠깐 내려놓고 다른 앱을 하는 경우도 포함 됩니다.) 하면 즉시 메모리에서 제거합니다.
기능 사용 이유
- 만약 사용자의 기기가 많은 앱을 설치하고 있고 메모리를 과다하게 쓰고 있다면
안드로이드의 JVM이 사용하지 않는 메모리를 정리하기 시작 할 겁니다.
JVM이 메모리를 정리하면 사용자가 잠시 백그라운드로 이동 시켜 놓았던 앱의 데이터들이
전부 초기화 되는 상황을 맞이 하시게 될 겁니다.
이 기능은 실제 안드로이드 서비스를 하고 있는 회사라면 꼭 고려해야하는 사항입니다.
쇼핑몰앱 이라면 잠시 백그라운드로 돌린 사이에 안드로이드 기기가 메모리가 부족해서 현재 화면에 표시되고 있는 데이터를
날려버릴수도 있는 것이고,
카카오톡 같은 채팅앱이라면 백그라운드로 돌린 사이에, 사용자가 작성한 긴 글을 날려버릴수도 있는 것입니다.
개발자는 항상 이러한 사항을 고려하여서 개발을 해야합니다.
오늘은 아래에서 예제를 보시고, 해결방안에 대해서 설명드리겠습니다.
아래 예제로 간단하게 보시죠
-> ->
위 작업 순서는 아래와 같습니다.
1. 커뮤니티 메뉴로 이동 > "안녕하세요" 라는 문자열을 검색창에 입력
2. 잠시 앱을 백그라운드로 이동
3. 다시 앱으로 접속
4. 메인 메뉴로 이동된 것과 "안녕하세요" 문자열이 날라 간 것을 확인
개발자 옵션 (액티비티 유지안함 or 활동보관 안함)을 ON 해두셨다면 위 사진과 같이
JVM이 메모리가 부족하다고 인식 한 후 바로 정리를 시작합니다.
이렇게 화면으로 돌아오면 방금 입력 했던 대화 내용이 사라진것을 확인 할 수 있습니다.
사용자들은 안드로이드 라는 기기를 다루거나 할 때 메모리의 효율성이나,
많은 앱이 얼마나 시스템에 치명적인지 그런 사항까지 고려하지 않습니다.
그런 차원은 개발자 측에서 고민한다고 생각합니다.
여기까지 앱의 메모리가 정리된 것을 확인 하셨고 해결 방안에 대해서 간략하게 밑에 정리해 두었습니다.
해결방안
해결방안은 정말 많습니다.
1. SharedPreference를 사용해서 onDestory등이 호출 될때 바로 값이 저장되도록 한다.
2. 매번 onCreate 시점에 데이터베이스에서 데이터를 호출 해온다
등등 제가 사용한 해결 방안은 2가지이지만
정말 앱 개발에서는 다양한 상황과, 다양한 구조의 앱이 있습니다. 어느 구조에 따라 해결방안은 틀려질테니
모든 초급 개발자분들이 잘 고려하시고 개발하셨으면 좋겠습니다.
(안드로이드) Socket.io를 활용한 웹 소켓 서버, 클라이언트 구축 (0) | 2019.05.23 |
---|---|
(안드로이드) 내부저장소 접근하기 (8) | 2019.03.28 |
Mac finder로 SVN서버 연결하기 (0) | 2019.03.04 |
(안드로이드) 고급 암호화 표준 (AES256) (0) | 2019.02.01 |
(안드로이드) Mac 안드로이드 스튜디오 SVN 설치, 셋팅, 사용법 정리 (Mac Android Studio SVN install, setting, usage) (1) | 2019.01.30 |