1

서비스로부터 알림을 만듭니다. 의도를 수신하면, 같은 플래그를 사용하여 활성을 B를 작성시작될 때 활동이 줄어 듭니다.

... 
Intent intent = new Intent(this, A.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
... 

활동 이 통지는 액티비티 만드는 것이 의도를 포함한다.

문제점 : 현재 (내 응용 프로그램이 닫혀 있거나 백그라운드로) 아무 것도 표시하지 않으면 작동하지 않습니다. 내가 통지 및 활동 클릭 현재 표시되면, 너무 작동하고 나는이 추적이 내 플래그 FLAG_ACTIVITY_CLEAR_TOP 새를 다시 작성해서는 안하면서

onActivityPaused(com.*****.A) 
onActivityCreated(com..*****.A) 
onActivityStarted(com..*****.A) 
onActivityResumed(com..*****.A) 
onActivityPaused(com..*****.A) 
onActivityCreated(com..*****.B) 
onActivityStarted(com..*****.B) 
onActivityResumed(com..*****.B) 
onActivityStopped(com..*****.A) 
onActivityDestroyed(com..*****.A) 
onActivityStopped(com..*****.A) 

(뭔가 이상한 때문에이 두 번 정지를 나는 현재 활동 B를 표시 할 때 하나?)

는하지만, 그 다음 발사를 중지하고 파괴 ... 나는 이유를 이해하지 않고 그냥 (재) 시작이 활동을해야합니다. 여기 추적 :

onActivityPaused(com.*****.B)   ? Why existing B is not destroyed ? 
onActivityDestroyed(com.*****.A) 
onActivityCreated(com.*****.A) 
onActivityStarted(com.*****.A) 
onActivityResumed(com.*****.A) 
onActivityPaused(com.*****.A) 
onActivityCreated(com.*****.B) 
onActivityStarted(com.*****.B) 
onActivityResumed(com.*****.B) 
onActivityStopped(com.*****.B)  ?? 
onActivityDestroyed(com.*****.B)  ?? 
onActivityStopped(com.*****.A) 

무엇을 잊어 버리나요?

편집 :

내 매니페스트은이 :

<activity 
     android:name="com.*****.A" 
     android:configChanges="keyboardHidden|orientation|screenSize" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.NoTitleBar" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.*****.B" 
     android:launchMode="singleTop" //Try just now with this line, should I keep it? 
     android:configChanges="keyboardHidden|orientation|screenSize" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > 
    </activity> 
+0

매니페스트를 게시하시기 바랍니다. –

답변

1

당신이 Intent.FLAG_ACTIVITY_CLEAR_TOP를 사용하고 이미 스택의 대상 Activity의 기존 인스턴스가있는 경우, 기본 동작은 모두 (마감) 취소하는 것입니다 최고 Activity에서 대상을 Activity으로 다시 스택 한 다음 대상 Activity의 새 인스턴스를 만듭니다. 이 경우 새 Intent이 새 인스턴스 onCreate()에 전달됩니다. 대상 Activity가 재 작성하지 않으려면

, 당신은 Intent.FLAG_ACTIVITY_SINGLE_TOP으로 Intent.FLAG_ACTIVITY_CLEAR_TOP을 결합해야하거나 기존 인스턴스의`) launchMode="singleTop" in the manifest. In this case, the new 의도 will be delivered to onNewIntent (와 대상 Activity를 선언해야합니다.

+0

답변 해 주셔서 감사합니다. 'onNewIntent'는 활동 ** B **에 대해 호출되지 않습니다. 내 통보에서, 나는 Intent.FLAG_ACTIVITY_CLEAR_TOP와 함께 ** A ** 활동을 시작하고, 활동 ** A **에서 Int 런치 활동 ** B **를'Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP' (** android : launchMode = "singleTop"을 활동 ** B **에 대한 매니페스트에 추가했습니다.) 작동하지 않습니다. onNewIntent()는 ** B **에 대해 호출되지 않습니다. – N0un

+0

'ActivityB'는'ActivityA'에서 실행될 때 스택에 존재하지 않으므로 안드로이드는'ActivityB'의 새로운 인스턴스를 생성합니다. 이 경우에는 onNewIntent()를 호출하지 않습니다. –

+0

왜이 플래그를 사용하여'ActivityA'에서'ActivityB'를 시작합니까? 너 뭐하려고? –

관련 문제