Android - onCreate вызывается при каждом запуске - PullRequest
2 голосов
/ 11 февраля 2012

У меня очень сложная проблема.

Когда я устанавливаю свое приложение из магазина, я иногда вижу следующее поведение:

  1. Отход от вызовов приложенияonStop, как и ожидалось
  2. Возврат к приложению вызывает onCreate для основного действия, а не просто onRestart / 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 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 ]

2 голосов
/ 11 февраля 2012

если вызывается onStop (), onResume нечего делать. Вызывается только после onPause. И onRestart вызывается только если вы код для этого. Смотри http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

2 голосов
/ 12 февраля 2012
0 голосов
/ 11 февраля 2012

Это на самом деле не имеет ничего общего с рынком.Если у Android недостаточно ресурсов для хранения вашего приложения в памяти, оно будет удалено из памяти, и его процесс будет уничтожен, а onCreate будет вызван снова при следующем запуске приложения.Вероятно, происходит то, что Маркет поглощает всю память вашего устройства при установке таким образом и вызывает описанное поведение.

...