안녕하세요 ^^
수정중인 코드에서 약간 버그(?)같은 문제가 발생해서 질문올립니다.
앱의 구성은 대략 아래와 같습니다.
Activity A - Service A - Activity B
알람앱이구요,
Activity A에서 알람을 지정하면 Service A에서 내부Thread로 알람을 돌립니다(counting job).
그리고 counting이 다 되면 Activity B를 startActivity로 호출하여 시간됐다는 화면 보여주고 다시 startActivity 로 Activity A 호출.
이렇게 돌아가는 간단한 구조입니다.
Activity A (알람 시간 지정) ---> Service A (thread로 1초에 -1 카운팅) --(알람 종료, startActivity B)-->
--> Activity B (finish A, 알람종료 화면 보여줌, startActivity A, finish B) ---> 다시 Activity A.
이렇게 진행되고 startActivity B는 Service A에서 실행하기 때문에 FLAG_ACTIVITY_NEW_TASK를 달고 보냅니다.
여기서 문제는 Task관련되서 발생되는듯한 문제가 있는데요..
시작하면서 Task1에 Activity A가 들어가고 Service가 돌다가 FLAG_ACTIVITY_NEW_TASK를 달고 startActivity가 실행되어
Task2에 Activity B가 들어가게 되죠.
1.
Task1(Activity A) --Service가 startActivity 호출--> Task2(Activity B)
위의 경우는 Activty A가 계속 화면에 남아 destroyed가 안된 상태의 시나리오이고 이 시나리오에서는 정상정으로 작동합니다.
2.
Task1(Activity A) --Back pressed, Activity A destroyed-Service가 startActivity 호출--> Task2(Activity B)
위 경우는 Activity A에서 알람을 지정하고 백키로 화면을 빠져나온 상태로 Activity A는 destroyed됩니다.
이 상태에서 Service가 NEW_TASK를 달고 startActivity B를 하여서 Task2를 만들어 진행합니다.
이 시나리오도 정상적으로 진행됩니다.
3.
Task1(Activity A) --Home pressed, Activity A Background됨-Service가 startActivity 호출--> Task2(Activity B)
이 경우에 이상한 에러가 납니다;;;
Activity A가 background로 간 상태에서 Service에서 NEW_TASK를 달고 startActivity B를 실행하면
Task1에 Activity A가 호출됩니다...;;
알람시간이 다 되도 Activity B가 호출이 안되고 A가 호출되서 사용자는 알람시간을 놓치게 되구요;;
어떤 안드로이드 구조적인 부분에서 제가 잘못 코딩한걸 수 있는데..그냥 보기에는 문제없어 보이네요
시나리오 3의 경우 만약 background된 Task1때문에 NEW_TASK가 안된다(?)고 해도 왜 Task1의 Activity A를 불러오는지 당췌 감이 안잡힙니다 ㅠ
고수님들의 도움...부탁드리겠습니다..




Activity A가 불린게 아니라 Activity B가 제대로 불리었는데 Task1이 활성화 되면서
Activity A가 화면을 차지하고 있는게 아닐까요?
3 시나리오에서 back 키 누르면 Activity B 나타나는지 확인 가능한가요?