2011-02-22 3 views
0

Activity 스택과 관련된 상황이 있습니다.하지만 이제는 Android 개발자에게 충분히 익숙하지 않아서 어떻게 대응할 수 있을지 모릅니다.알림 열기 버튼과 뒤로 버튼? 하나의 인스턴스로 제한 하시겠습니까?

나는 스톱워치처럼 작동하는 응용 프로그램을 가지고 있습니다. 시작하면 진행중인 알림이 알림 트레이에 나타나고 스톱워치를 중지 할 때까지 계속 진행됩니다. 스톱워치가 포 그라운드에서 실행 중이고 통지를 터치하면 스톱워치의 활동에 대한 새로운 인스턴스가 생성되고 이전 스톱워치의 슬라이드가 화면에서 사라지는 것으로 나타났습니다. 이렇게하면 뒤로 버튼에 문제가 생깁니다 (뒤로를 누르고 새 인스턴스가 사라져 이전 인스턴스가 표시됨). 이것이 왜 일어나는 지 이해하지만, 나는 이런 일이 일어나기를 원하지 않습니다. 내 응용 프로그램의 여러 인스턴스가 실행되지 않도록하려면 어떻게해야합니까?

+0

질문 할 때 DRY 원리를 사용해야합니다. 안드로이드 태그로 태그를 지정할 때 질문에 "[Android]"를 넣어야 할 필요는 없다고 생각합니다. –

답변

4

내 응용 프로그램의 여러 인스턴스가 실행되지 않도록하려면 어떻게해야합니까? 에서

Intent 당신이 setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); 또는 setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);를 추가 NotificationPendingIntent와 함께 사용, 더 나은 당신의 요구에 맞는 중 행동.

+0

행동의 차이점은 무엇입니까? –

+0

@Corey Ogburn : 몇 가지 활동이있는 경우, 'CLEAR_TOP' 변형은 작업 기록을 지우고 사용자에게'알림 '에 의해 트리거 된 활동 만 남겨 둡니다. 'REORDER'변형은 기존 작업을 포 그라운드로 끌어오고 다른 작업은 작업 기록에 남겨 둡니다. 해당 플래그에 대한 문서에는 자세한 내용이 있습니다. – CommonsWare

1

뒤로 단추를 비활성화 할 수도 있습니다. CommonsWare 솔루션만큼 우아하지는 않지만 몇 가지 옵션에는 아무런 문제가 없습니다!

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
}