【发布时间】:2015-04-27 09:03:01
【问题描述】:
我正在尝试仅在棒棒糖上使用新的 API 进行活动转换(我使用的是紧凑版本),所以我在活动 A 中实现了从活动 A 到活动 B 的动画:
getWindow().setReenterTransition(null);
getWindow().setExitTransition(null);
getWindow().setAllowEnterTransitionOverlap(false);
getWindow().setAllowReturnTransitionOverlap(false);
因为我对此活动的进入或退出不感兴趣,所以我想看到的唯一动画是在与活动 B 的共享视图中。
用于启动 Activity B:
ActivityCompat.startActivity(this, intent, ActivityOptionsCompat.makeSceneTransitionAnimation(this, fabButton, getString(R.string.transition_fab)).toBundle());
以及Activity B的设置:
getWindow().setEnterTransition(new EmptyTransition());
getWindow().setReturnTransition(null);
getWindow().setAllowEnterTransitionOverlap(false);
getWindow().setAllowReturnTransitionOverlap(false);
getWindow().getEnterTransition().addListener(listener).
再次,我对返回转换的进入转换不感兴趣,因为在调用进入转换监听器方法“onTransitionEnd”之前内容是隐藏的,所以我的转换都是基于从活动 A 移动/增长的共享元素到活动 B,当这个过渡完成后,我将内容带入。
一切正常,但在不是很强大的设备(所以所有非 Nexus)上,Activity A 会不时安静地崩溃:
java.lang.RuntimeException: Performing stop of activity that is not resumed: {com.transferwise.android.debug/com.transferwise.android.activity.LoggedInMainActivity}
并且共享元素的转换发生了,但是没有调用监听器(不是事件 TransitionStart),所以内容没有进入。应用程序没有崩溃,用户仍然可以按下并“重试”,但这不是一个很好的用户体验。
很难对其进行测试,因为它每 10/20 次发生一次,并且仅在某些特定设备上发生(在 Sony Xperia Z3 紧凑型上发生得更多)。
还有:
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}
【问题讨论】:
-
嘿。我有着同样的问题。你有没有弄清楚是什么原因造成的?
-
不幸的是内存问题
标签: android animation android-activity android-5.0-lollipop android-lifecycle