【发布时间】:2013-07-05 20:17:39
【问题描述】:
我有一个活动,当它第一次加载时,它会执行一些 OnCreate,我在 OnResume 时也需要运行,问题是它第一次进入活动时,它会同时通过 OnCreate 和 OnResume,如果我导航到另一个活动,然后使用后退箭头返回到仅触发 OnResume 的活动,这很好,除非在第一次运行活动时通过它,这会导致它两次调用相同的东西.如果可能的话,我怎样才能避免第一次不调用 OnResume() 的活动?
【问题讨论】:
我有一个活动,当它第一次加载时,它会执行一些 OnCreate,我在 OnResume 时也需要运行,问题是它第一次进入活动时,它会同时通过 OnCreate 和 OnResume,如果我导航到另一个活动,然后使用后退箭头返回到仅触发 OnResume 的活动,这很好,除非在第一次运行活动时通过它,这会导致它两次调用相同的东西.如果可能的话,我怎样才能避免第一次不调用 OnResume() 的活动?
【问题讨论】:
如果可能的话,我怎样才能避免第一次不调用 OnResume() 的活动?
这是不可能的。它是专门设计的,因此您不会做两次。
当它第一次加载时,它会在 OnCreate 执行一些我在 OnResume 时也需要运行的东西
将所有这些“东西”移动到onResume()。这样,无论 Activity 是首先进入屏幕还是返回屏幕,工作都会完成。
您可能希望花一些时间查看the activity lifecycle。
【讨论】:
这就是android activity lifecycle works。
避免此问题的一种方法是,只需将逻辑移至onResume()
【讨论】:
这是由于 Android 活动生命周期的性质造成的。请阅读Pausing and Resuming an Activity了解更多信息。
干杯!
【讨论】:
如果您仍然想尝试其他解决方案,在onCreate 调用时第一次不运行您在onResume 中编写的代码。您可以添加boolean 值,在onCreate 和onResume 中为其分配真值,检查它是否为真,然后跳过代码,否则运行您在onRusume 上编写的代码。
【讨论】: