pendingintent, notification 질문 드립니다.

조회수 2849회
    ServiceHandler handler = new ServiceHandler();
    manager = (NotificationManager)getSystemService(Service.NOTIFICATION_SERVICE);
    intent1 = new Intent(this, MainActivity.class);
    pendingIntent = PendingIntent.getActivity(this, 0, intent1,         PendingIntent.FLAG_UPDATE_CURRENT);
    NotiThread thread = new NotiThread(handler, this);
    thread.start();

소스는 위와 같습니다. 제가 궁금한것은 앱을 실행중인 상태에서 알림을 클릭하면 실행중인 앱 위에 또 얹어서 실행이 되버리는데 어떻게 하면 이렇게되지 않게 할 수 있나요?? 앱이 실행중인 상태라면 그냥 그 상태를 유지하고 싶습니다.

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    액티비티의 launchMode를 설정하지 않았다면 "standard"로(기본 값) 동작합니다. 이 값은 startActivity()를 할 때 마다 새로운 액티비티를 생성하는 것을 의미합니다. launchMode는 네가지 설정을 할 수 있고, 각각 standard, singleTop, sigleTask, singleInstance입니다. MainActivity가 화면에 보이고 있는 상태에서는(액티비티 스택의 최상단에 있는 경우) 새로운 액티비티를 만들고 싶지 않다면 이 값을 singleTop으로 설정해보시기 바랍니다. 이렇게 할 경우, 새로운 액티비티가 생성되는 것이 아니기 때문에 onCreate() 함수가 호출되 않고, 기존 액티비티의 onNewIntent()가 호출됩니다.

    물론 singleTask, singleInstance로도 같은 효과를 낼 수 있습니다. 다만 조금씩 차이점이 있는데요. 이 부분에 대한 내용은 공식 문서의 내용을 읽어보시고, 직접 테스트 해보시는 것이 도움이 될 것 같습니다.

    또는 AndroidManifest.xml의 launchMode를 수정하지 않고, 알림 클릭 시에만 해당 처리를 하고 싶다면 위 코드에서 MainActivity에 대한 인텐트를 생성할 때 FLAG_ACTIVITY_SINGLE_TOP 플래그를 주는 방법도 있습니다. 이렇게 할 경우, lauchMode의 "singleTop"가 동일하게 동작합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 좋은 답변 감사합니다~ 정해민 2017.5.5 04:10

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)