- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Android 10 上遇到了一个奇怪的问题,当我开始新的横向 Activity 时,下面的 Activity 将重新创建。
假设有两个 Activity
类:
ActivityA: orientation = unspecified
ActivityB: orientation = force landscape, full screen, opaque
如果我从ActivityA
启动ActivityB
,生命周期事件的日志:
D/ActivityA: onPause() called
D/ActivityB: onCreate() called
D/ActivityB: onStart() called
D/ActivityB: onResume() called
D/ActivityA: onStop() called
D/ActivityA: onDestroy() called
D/ActivityA: onCreate() called
D/ActivityA: onStart() called
D/ActivityA: onResume() called
D/ActivityA: onPause() called
D/ActivityA: onStop() called
可以清楚的看到ActivityA
被重新创建了,而且不知何故ActivityA#onResume
是在ActiviyB#onResume
之后调用的??
好的,现在我们在堆栈顶部有了 ActivityB
,然后我按下后退按钮:
D/ActivityB: onPause() called
D/ActivityA: onStart() called
D/ActivityA: onResume() called
D/ActivityA: onPause() called
D/ActivityA: onStop() called
D/ActivityA: onDestroy() called
D/ActivityA: onCreate() called
D/ActivityA: onStart() called
D/ActivityA: onResume() called
D/ActivityB: onStop() called
D/ActivityB: onDestroy() called
ActivityA
又重新创建了吗?
正如我在我的设备中看到的那样,ActivityA
在 ActivityB
可见之前以及当 ActivityB
退出时,有一个动画会旋转到横向模式, ActivityA
再次旋转回纵向模式。此行为可能会导致 ActivityA
一次又一次地重新创建。
它乱七八糟,你知道如何防止ActivityA
在这种情况下重新创建,或者这是Android本身的错误?
我可以很容易地处理 ActivityA
的配置更改,问题是 ActivityA
有一个非常复杂的 View 结构,不必要地重新创建它会导致 UI 滞后,而且 Activity 的生命周期回调也很困惑导致逻辑错误。
我刚刚发现 recreate()
方法被 AppCompatDelegateImpl
类调用了两次,这就是为什么我得到奇怪的生命周期行为:
最佳答案
对于这种行为,您可能无能为力。如果不会给您带来太多问题,我会提出以下建议:
android:configChanges="orientation"
添加到 ActivityA
的 list 条目中ActivityA
中实现 onConfigurationChanged()
并自行处理方向变化这将防止 Android 在方向更改期间终止和重新创建 ActivityA
。
关于Android 10 - 奇怪的 Activity 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63500099/
我正在开发一个使用多个 turtle 的滚动游戏。玩家 turtle 根据按键命令在 Y 轴上移动。当危害和好处在 X 轴上移动时,然后循环并改变 Y 轴位置。我尝试定义一个名为 colliding(
我不明白为什么他们不接受这个作为解决方案,他们说这是一个错误的答案:- #include int main(void) { int val=0; printf("Input:- \n
我正在使用基于表单的身份验证。 我有一个注销链接,如下所示: 以及对应的注销方法: public String logout() { FacesContext.getCurren
在 IIS7 应用程序池中有一个设置 Idle-time out 默认是 20 分钟,其中说: Amount of time(in minutes) a worker process will rem
我是一名优秀的程序员,十分优秀!