아 몇가지 여쭈어 볼것이 있는데요..
안드로이드 경우 어플 실행하고 있다고 멈추고 있으면 일정 시간이 지나면 "일정시간이 지나 게임이 종료됩니다" <- 이런 문구 나오면서
어플이 강제 종료 되어지잖아요.. 이 어플 강제 종료가 되는 시간? 이 시스템상에 딱 명시?가 되어있나요?
예를들어 최대 2분 동안 액션이 없을시 강제종료 되어진다 라던지...
아니면 강제종료가 안되게 할수도있나요?
아이폰경우 제가 알기로 최초 개발시 백그라운드 사용으로 하고 어플 실행하다가 홈키 종료해도 차 후에 타 어플로 인한 메모리를 잡아먹지 않는이상 백그라운드 종료가 안되고 다시 어플 실행 시 계속 이어지는것으로 알고있거든요..
안드로이드도 그런 방식이 가능한가요?
아니라면.. 백그라운드에서 강제종료 되는 시간이 어떻게 되는지 알고싶습니다.
앱이 백그라운드 상태로 있을 때는 30분이 지나면 Root Activity를 제외하고는 모두 destroy 됩니다. 다시 해당 태스크를 불렀을 때 상태를 보존하고 싶다면 onSaveInstance(Bundle outState)를 통해 상태를 보존하고 onCreate(Bundle savedInstanceState)나onRestoreInstanceState(Bundle savedInstanceState) 로 들어오는 파라미터인 savedInstanceState 에서 데이터를 가져와서 설정해 주시면 됩니다.
또는 매니페스트의 액티비티 속성에 alwaysRetainTaskState를 true로 만들면 태스크를 정리하지 않습니다. 하지만 이 방법은 휴면상태에 들어가야할 태스크가 자원을 계속 사용하고 있기 때문에 별로 좋은 방법은 아닙니다.
사용자가 강제 종료하지않는 이상 액션없을시 강제 종료되지않구요 메모리가 부족하면 JVM이 메모리 반환을 요청할수있는걸로 알고있어요
물론 서비스 동작중 비정상종료시 서비스가 다시 작동도 하구요 프로그래머에 의하여 해당부분은 타이머를 주셔서 종료해주시면 될듯싶습니다. ex) onPause{ 타이머 사용으로 2분뒤 종료 } onResume{ 타이머 캔슬 } 하셔서 사용하면 되겠지요