내가 개발한 광고 SDK에서 버그가 발견되었다는 것이다ㅠㅠ
물론 버그없는 프로그램은 없지만......가슴이 아프다
어떠한 버그인지 확인하니 다음과 같았다.
앱실행 -> 광고실행 -> 광고시청중 홈버튼으로 바탕화면 -> 바탕화면에서 멀티태스킹버튼으로 광고진입 -> 광고 이어서 재생 -> 시청 완료 -> 광고 종료 후 바탕화면(?)
참 어렵다.... 뭔놈의 상황인지...
우선 현상을 보니 Manifest의 문제로 예상. 가장 의심스러운 launchMode를 확인하니... singleInstance!!
이것 때문에 광고가 새로운 Task로 인식이 되어, 광고가 끝나니 다시 배경화면으로 이동된 것이다. 그래서 singleTask로 변경하니 앱과 광고가 하나의 Task로 인식이 되어 정상적로 실행됨.
이 기회에 launchMode에 대해 공부하자
launchMode는 말 그대로 실행될 모드이며, 종류로는 4가지가있다.
standard (default) : intent를 할때마다 Activity를 새로 생성한다.
singleTop : intent를 할때마다 activity를 새로 생성하나, 동일한 Activity가 top에 있을 경우 새로 생성하지 않고 기존에 있던 Activity를 호출,
생명주기는 onPause -> onNewIntent -> onResume
위에 2가지 모드와 반대로 아래 2개는 하나만 생성되는 옵션이다.
singleTask : 하나의 Activity만 생성이 되나, 다른 Activity가 해당 태스크의 일부가 되는 것을 허용한다.
singleIntance : 이 옵션도 Task와 비슷하나, 그 어떤 Activity와도 섞이지 않고 유일한 Activity로 동작한다. 즉 A액티비티에서 B(singleInstance)액티비티를 Intent하면 멀티태스킹버튼을 눌렀을 때 A와 B액티비티가 뜬다.(A와 B가 하나의 앱임에도 불구하고)
결국 버그는 광고sdk가 singleInstance로 되어있기 때문에
홈버튼 -> 광고시청 -> 광고종료 했을때 바탕화면으로 돌아갈수밖에 없는 구조여서 발생했다.
singleInstance일때 : 앱 -> 광고 -> 홈버튼 -> 광고 -> 광고종료 -> 바탕화면
singleTask일때 : (앱/광고) -> 홈버튼 -> (앱/광고) -> 광고종료 -> (앱)
singleTask로 하니 앱과 광고가 하나의 task로 인식되어 홈버튼 -> 광고->광고종료->앱 으로 돌아가게 되었다.
'Android' 카테고리의 다른 글
안드로이드(android) 핸들러(Handler) 개념 & 예제 (0) | 2016.05.26 |
---|---|
안드로이드(android) 쓰레드(Thread) 개념 예제 (1) | 2016.05.19 |
서버와 로컬 파일 사이즈 비교하기 (0) | 2015.11.13 |
블루스택, 윈드로이, 지니모션 구분하기 (0) | 2015.09.04 |
android XmlPullParser, 안드로이드 xml 파싱 (0) | 2015.02.13 |