Android - onCreate在每次发布时都会被调用

时间:2012-02-11 06:35:50

标签: android android-activity oncreate

我很难确定问题。

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

  1. 按预期
  2. 导航离开应用程序调用onStop
  3. 返回应用程序调用onCreate进行主要活动,而不仅仅是onRestart / onResume
  4. 无论如何,每次用户离开/返回应用时,

    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 com.android.internal.policy.impl.PhoneWindow$DecorView@40547888 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()
    

    我在这里绝望。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:-1)

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