Sto provando a utilizzare la nuova API per la transizione delle attività solo su lollipop (sto utilizzando la versione compatta tho), quindi sto implementando un'animazione dall'attività A all'attività B, in attività a:Transizione attività: esecuzione dell'arresto dell'attività non ripristinata
getWindow().setReenterTransition(null);
getWindow().setExitTransition(null);
getWindow().setAllowEnterTransitionOverlap(false);
getWindow().setAllowReturnTransitionOverlap(false);
perché io non sono interessato a entrare o uscire di questa attività, gli unici animazioni che voglio vedere sono nella visualizzazione condivisa con l'Activity B.
Per l'avvio dell'attività B:
ActivityCompat.startActivity(this, intent, ActivityOptionsCompat.makeSceneTransitionAnimation(this, fabButton, getString(R.string.transition_fab)).toBundle());
E la messa a punto di attività B:
getWindow().setEnterTransition(new EmptyTransition());
getWindow().setReturnTransition(null);
getWindow().setAllowEnterTransitionOverlap(false);
getWindow().setAllowReturnTransitionOverlap(false);
getWindow().getEnterTransition().addListener(listener).
Anche in questo caso non mi interessa entrare nel passaggio di transizione di ritorno perché il contenuto è nascosto fino alla transizione metodo di entrare ascoltatore 'onTransitionEnd' si chiama, quindi la mia transizione è tutto basato sull'elemento condiviso che si sposta/cresce dall'Attività A all'attività B e quando questa transizione è terminata sto portando il contenuto.
Tutto funziona bene, ma su dispositivi non molto potenti (quindi tutti i non- Nexus) di volta in volta l'attività A si blocca silenziosamente con:
java.lang.RuntimeException: Performing stop of activity that is not resumed: {com.transferwise.android.debug/com.transferwise.android.activity.LoggedInMainActivity}
E la transizione dell'elemento condiviso si verifica ma il listener non viene chiamato (non evento TransitionStart), quindi il contenuto non viene inserito. L'app non si arresta, l'utente può comunque tornare indietro e "riprovare" ma non è un ottimo UX.
È difficile testarlo perché accade una volta ogni 10/20 volte e solo su alcuni dispositivi specifici (succede più su un Sony Xperia Z3 compatto).
anche:
Danieles-MacBook-Pro-2:~ danielebottillo$ adb shell dumpsys activity p | grep com.package.main.debug
*APP* UID 10349 ProcessRecord{3b27508d 18371:com.package.main.debug/u0a349}
dir=/data/app/com.package.main.debug-1/base.apk publicDir=/data/app/com.package.main.debug-1/base.apk data=/data/data/com.package.main.debug
packageList={com.package.main.debug}
- ActivityRecord{2f07bdf8 u0 com.package.main.debug/com.package.main.activity.ActivityA t1196}
- ActivityRecord{1e871eb3 u0 com.package.main.debug/com.package.main.activity.ActivityB t1196}
- 28ea3e28/com.android.providers.settings/.SettingsProvider->18371:com.package.main.debug/u0a349 s1/1 u0/0 +27m9s645ms
- ReceiverList{40f2178 18371 com.package.main.debug/10349/u0 remote:39e102db}
- ReceiverList{2e7456a6 18371 com.package.main.debug/10349/u0 remote:dde3801}
- ReceiverList{39e2f1b7 18371 com.package.main.debug/10349/u0 remote:362300b6}
- ReceiverList{3afa7bd5 18371 com.package.main.debug/10349/u0 remote:33e4088c}
ProC# 0: fore F/A/T trm:10 18371:com.package.main.debug/u0a349 (top-activity)
PID #18371: ProcessRecord{3b27508d 18371:com.package.main.debug/u0a349}
Ehi. Ho lo stesso problema. Hai mai capito cosa stava causando? – black
purtroppo solo per problemi di memoria –