2

내 응용 프로그램에 여러 활동이 포함되어 있으며 주 활동 (A)은 launchMode singleTop에 있으며 모든 활동은 singleInstance 모드입니다.최근 응용 프로그램 화면에서 singleInstance 활동을 열 때 작업 스택 유지

내가 이런 식으로 이동하면 illimited 탐색 을 방지하기위한 singleInstance을 선택했습니다 : A -> B -> C -> B -> C -> B -> C 백 작업을 할 것입니다 : C -> B -> A

예상대로 작동합니다.

문제점 : A -> B를 탐색 한 후 응용 프로그램 recents 화면을 열어 내 응용 프로그램을 클릭하고 활동 b가 표시되면 (확인) 다시 돌아가서 Android 홈으로 돌아갑니다 (활동이 아닌 경우). 파괴, 나는 항상 최근 애플 리케이션 화면 이후 B 열 수 있습니다)

최근 응용 프로그램 메뉴에서 응용 프로그램을 열면 작업 기록이 유지되지 않는 이유는 무엇입니까? singleInstance 활동이 호출되면 당신의 도움이

+0

예상대로 작동하지 않을 수 있습니다. taskAffinity도 설정하지 않으면'launchMode = "singleInstance"'설정은 쓸모가 없습니다. A-> B-> C-> B-> C로 전환하는 방법을 게시하십시오. 각 전환에 대해'startActivity()'를 호출하면 작업에 B와 C의 인스턴스가 여러 개있을 것입니다. –

답변

1

에 대한

<activity 
     android:name="A" 
     android:label="@string/app_name" 
     android:launchMode="singleTop" 
     android:configChanges="orientation|screenSize" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <meta-data 
      android:name="android.app.default_searchable" 
      android:value=".SearchResultsActivity" /> 
    </activity> 
    <activity 
     android:configChanges="orientation|screenSize" 
     android:name="B" 
     android:label="B" 
     android:launchMode="singleInstance" 
     android:theme="@style/AppTheme.NoActionBar"> 
    </activity> 
    <activity 
     android:configChanges="orientation|screenSize" 
     android:name="C" 
     android:label="C" 
     android:launchMode="singleInstance" 
     android:theme="@style/AppTheme.NoActionBar"> 
    </activity> 

덕분에, 새 작업이 생성 된 것을 알 수있다. dumpsys을 통해 두 가지 작업을 찾을 수 있지만 작업 관리자에는 하나의 작업 만 표시됩니다. 이것은 시스템 버그 일 수 있습니다. 그리고 작업 B가 taskAffinity으로 설정되면 작업 관리자에 두 개의 작업이있을 수 있습니다.

당신은에서 singleInstance의 B를 시작하기 때문에,이있을 것 두 가지 작업은 존재 : 작업 1 활동을 포함, 작업이이 활동 B.이

당신 만이 들어있는 작업 관리자에서 작업이를 열고 포함하는 동안 singleIntance 활동 B, 그래서 당신 수 없습니다 다시 활동 A.에

버튼을 다시 사용하는 경우 그것은 잘 작동

에 관계없이 활동이 새 작업이나 활동과 같은 작업에서 시작 여부

때문에 그게 시작된, 박쥐 k 버튼을 누르면 항상 이전 활동으로 이동합니다.

Developer Document: Tasks and Back Stack에서 얻을 수 있습니다.

정말 필요한 경우 singleInstace 모드를 사용하지 않는 것이 좋습니다.

+0

'singleAstance'와'singleTask' 실행 모드는'taskAffinity'도 지정되어 있지 않으면 문서화/예상대로 작동하지 않습니다. 왜냐하면'taskAffinity'가 이러한 특별한 실행 모드보다 우선하기 때문입니다. –

+0

@DavidWasser 예, 이것이 시스템 버그 일 수 있다고 생각합니다. –

관련 문제