Android - 每次启动时都会调用onCreate

问题描述:

我很难确定问题。Android - 每次启动时都会调用onCreate

当我安装我的应用程序从市场,我有时会看到以下行为:

  1. 导航离开这个程序调用的onStop,如预期
  2. 返回到应用程序调用的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() 

我绝望这里。有任何想法吗?

+0

我认为这是无法预测的,并不能保证。如果应用程序活动不在堆栈中,则将调用oncreate,否则将调用onResume。这是生命周期。 – kosa 2012-02-11 06:40:50

我终于找到了答案,这是在对这个问题的第一反应:

How to prevent multiple instances of an activity when it is launched with different intents

这实际上与市场无关。如果Android没有足够的资源将您的应用保存在内存中,那么它将从内存中移除,并且它的进程将被终止,并且在您的应用下次启动时将再次调用onCreate。可能发生的情况是,当你以这种方式安装并导致描述的行为时,市场正在耗尽设备的所有内存。

+0

这是我最初想的,但看着日志,应用程序继续在后台就好了。没有崩溃或onDestroy或任何奇怪,直到我再次点击图标,并调用onCreate。 – TomBomb 2012-02-11 06:45:38

+0

嗯......这很奇怪。您的应用是否按预期启动并正常工作? logcat可能会在这个问题上发出更多亮点(因为你所描述的明显不符合通常的应用程序生命周期) – aviraldg 2012-02-11 06:54:02

+0

是的,它启动并运行得很好。唯一的问题似乎是当用户返回到应用程序时重新创建主要活动。 – TomBomb 2012-02-11 20:26:55

如果调用onStop(),则onResume没有任何内容。它仅在onPause之后调用。 onRestart仅在代码中调用。见http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

+0

嗯..当我点击“主页”按钮时,我的日志显示onPause后跟onStop。当我点击应用程序图标时,我的日志显示onRestart,然后显示onResume。 – TomBomb 2012-02-11 06:50:59

+0

这就是它的样子,onRestart()中的代码是否正在运行? – 2012-02-11 07:00:51

+0

正确的,这是它应该是..我的问题是,应用程序可以进入一个状态时,触发图标触发onCreate而不是onRestart。没有任何东西在手机上占用内存,并且该应用在后台运行良好。合理? – TomBomb 2012-02-11 13:20:02