2013-02-25 2 views
2

I가 내가 안드로이드 가이드 라인을 준수하기 위해 다시 스택 백 스택을 구축하는 액티비티 (C) 시작 알림 : 사용자는 알림을 클릭예기치 않은 돌아 가기 스택 행동

C 
B 
A 

을, 그것을 C를 열면 그들이 뒤로 누르면 B로 간 다음 A로 간 다음 홈 화면으로 간다. 이것은 예상대로 작동합니다.

사용자가 알림을 클릭하면 (C 열림) 홈 버튼을 눌러 홈 화면으로 이동 한 다음 홈 화면에서 앱을 시작하고 예상대로 C가 아니라 A를 엽니 다. 그런 다음 다시 (A에서) 누르면 C, B, A가 표시됩니다.이 상황에서 홈 화면에서 앱을 시작하면 새로운 활동 A가 만들어져 기존 스택 맨 위에 놓입니다. 대신 스택의 모습 때문에, 기존의 스택 (C)의 상단을 여는 :

A 
C 
B 
A 

내 코드 다시 스택을 생성하고 통지 의도를 시작 :

/* Build the back stack for navigation */ 
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
/* Pairing List */ 
Intent intent = new Intent(this, A.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
stackBuilder.addNextIntent(intent); 
/* Pairing */ 
intent = new Intent(this, B.class); 
intent.putExtra("id", briefing.getLeg().getDay().getPairing().getId()); 
stackBuilder.addNextIntent(intent); 

/* Create a launch intent and notification */ 
intent = new Intent(this, C.class); 
intent.putExtra("date", briefing.getLeg().getDay().getDate()); 
intent.putExtra("id", briefing.getLeg().getId()); 
intent.putExtra("briefing", true); 

stackBuilder.addNextIntent(intent); 
pIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_ONE_SHOT); 

활동 선언에 내 선언 :

<activity android:name=".C" /> 
<activity 
    android:name=".A" 
> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
<activity android:name=".B" /> 

의도에 대한 플래그를 설정하는 데 문제가 있다고 생각하지만 변경해야 할 항목이 확실하지 않습니다. 어떤 아이디어?

+0

(또는 웹 브라우저 이클립스 또는 인 IntelliJ 같은 또는에서 IDE에서) :

는 한 번 봐? 그렇다면 Android에서 설명 된 동작을 유발하는 버그가 있습니다. 대신 HOME 화면에서 응용 프로그램을 실행 (처음)하고 문제가 아직 있는지 확인하십시오. –

+0

설치 후 첫 번째 출시를 의미합니까? 그것은 이클립스를 통한 것이었다. 그 이후로 장치가 재부팅 된 후 홈 화면에서 앱이 시작되었다. – Ralgha

+0

위 코드에서 추가 한 플래그가 아무런 차이가 없다고 판단했습니다. 또한이 동작은 루트 액티비티 (A)를 백 스택에 넣을 때만 발생하는 것으로 확인되었습니다. B와 C 만 A없이 추가하면 예상대로 작동합니다. 내가 A, B, C를 더하면 문제가 생깁니다. 나는 이것을 고치는 방법을 모른다. – Ralgha

답변

0

정상적인 동작이라고 생각합니다. 상단의 활동 만 활성화 될 수 있습니다. 따라서 A를 시작하면 맨 위에 밀려납니다.

새 작업 (자체 백 스택 사용)을 시작하려면 매니페스트에서 launchmode를 "singleInstance"로 설정해야한다고 생각합니다. 인 텐트를 사용하면 Back stack A-> B-> C를 생성 할 수 있습니다. 설치 프로그램에서 응용 프로그램 (처음)를 시작 했 http://developer.android.com/guide/components/tasks-and-back-stack.html

관련 문제