안녕하세요.
어플 수정중 막힌 부분이 있어 질문 드립니다.
강좌게시판에 그냥가자님께서 해결책을 제시해주신 글을 보았지만 개념이 이해가 잘 안되어서요.
현재 어플은 TabActivity를 이용한 어플입니다.
어플을 구동 중 Push메세지가 날아오게 되면
App내에 있는 리시버에서 푸시메세지를 받아 PushActivity라는 곳으로 던져 줍니다.
이곳 PushActivity에서는 AlertDialog를 이용하여 날아온 메세지를 보여주고
버튼을 클릭시 TabActivity내의 특정 Acitvity로 이동을 하게됩니다.
헌데 여기서 문제는 PushActivity에서 TabActivity를 컨트롤하지 못하는데요.
그래서 PushActivity에서 어플리케이션을 새로 실행을 시키는데요.
문제는 앱이 중복 실행이 되어버리네요.
CLEAR_TOP 같은 여러 FLAG를 주어 보아도 어플의 중복실행을 막을 방법을 찾지 못하였습니다.
혹 알고계신 부분이 있으시다면 힌트 부탁드리겠습니다.
그럼 남은하루도 좋은 하루 되시길 바랍니다~
whylee 님 답변 감사드립니다.
현재 메인Activity에서는 어플 실행시 넘겨온 인텐트 값이 있는지를 체크하여
넘겨준 값에따라 Activity를 이동합니다.
PushActivity에서
Intent intent = new Intent(PushActivity.this, TabActivity.class);
intent.putExtra("STATE", "true");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
를 해주고 있는 상황이고 onNewIntent()는 사용하고있지 않습니다.
제가 알기론 onNewIntent()는 호출한 Activity가 현재 실행중에 있다면 새로 띄우지 않고
기존 살아있는 Activity를 사용한다는 것으로 알고있는데 이건 TabActivity에서 intent값을 가지고
이동 할 Activity에 대해서 동작을 하는 것이니
PushActivity에서 메인Activity를 띄울 때 CLEAR_TOP으로 중복실행을 막는 다는 것이지요?
음....FLAG를 줘도 잘 안되더라구요. 조금 더 연구해봐야겠네요.
답변 감사드립니다 :)




Intent intent = new Intent(this, TabActivity.class);
intent.putExtra("EXTRA_TARGET", target);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
위와 같은 식으로 하면 됩니다.
대신에 TabActivity 안에 onNewIntent()를 오버라이드 하여,
인텐트로 넘겨진 target정보로 탭을 전환하는 것을 넣어야 합니다.
단, activity들이 다른 task에서 실행되도록 하지 말아야 합니다.
*** 어플중복실행이기 보단 메인 activity의 중복 실행이라는 표현이 맞을듯 해요.