Android - 每次启动时都会调用onCreate
问题描述:
我很难确定问题。Android - 每次启动时都会调用onCreate
当我安装我的应用程序从市场,我有时会看到以下行为:
- 导航离开这个程序调用的onStop,如预期
- 返回到应用程序调用的onCreate为主要活动,而不仅仅是重新启动/ onResume
无论如何,每次用户离开/返回到应用程序时,onCreate都会继续调用。很显然,这会导致在状态等方面出现重大问题。
有时重新启动手机会修复此问题,有时不会。从.adb安装可防止此行为。从行为的应用程序,在图标触摸(同时运行)
日志:从搞砸应用
2-10 18:56:33.855: INFO/ActivityManager(1482): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.sidekickApp/.Main } from pid 1604
02-10 18:56:33.855: VERBOSE/HtcAppUsageStats(1482): (launch app, package): (Sidekick App, com.sidekickApp)
02-10 18:56:33.865: DEBUG/PhoneWindow(1604): couldn't save which view has focus because the focused view [email protected] has no id.
02-10 18:56:33.865: DEBUG/Background traffic light(1604): traffic light: GREEN, mBackgroundTrafficLight = false
02-10 18:56:33.895: VERBOSE/Main(2648): Debug: onRestart()
02-10 18:56:33.895: DEBUG/Main(2648): Debug: onResume()
登录:
02-10 18:39:35.813: INFO/ActivityManager(1477): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.sidekickApp/.Main bnds=[360,586][477,704] } from pid 1583
02-10 18:39:35.843: VERBOSE/HtcAppUsageStats(1477): (launch app, package): (Sidekick App, com.sidekickApp)
02-10 18:39:35.873: DEBUG/Background traffic light(1583): traffic light: GREEN, mBackgroundTrafficLight = true
02-10 18:39:35.903: VERBOSE/Main(7364): Debug: onCreate()
我绝望这里。有任何想法吗?
答
我终于找到了答案,这是在对这个问题的第一反应:
How to prevent multiple instances of an activity when it is launched with different intents
答
这实际上与市场无关。如果Android没有足够的资源将您的应用保存在内存中,那么它将从内存中移除,并且它的进程将被终止,并且在您的应用下次启动时将再次调用onCreate
。可能发生的情况是,当你以这种方式安装并导致描述的行为时,市场正在耗尽设备的所有内存。
答
如果调用onStop(),则onResume没有任何内容。它仅在onPause之后调用。 onRestart仅在代码中调用。见http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
我认为这是无法预测的,并不能保证。如果应用程序活动不在堆栈中,则将调用oncreate,否则将调用onResume。这是生命周期。 – kosa 2012-02-11 06:40:50