2017-01-20 12 views
0

Я сделал приложение для Android, когда я закрыл приложение (используя домашнюю кнопку) и снова открыл приложение, он снова не вызывает onCreate(). Вместо этого он просто загружается из памяти.Запуск oncreate каждый раз, когда открыто приложение для Android.

Как я могу убедиться, что каждый раз, когда приложение открыто? onCreate() выполнено?


EDIT: приложение должно сделать то же самое в onCreate() как в onResume().

Когда я копирую точный код в функцию onResume(), он не работает.

Поэтому я хочу полностью закрыть приложение (и процесс) (или сделать что-то подобное), поэтому onCreate() всегда вызывается после повторного открытия приложения.

+1

вы можете использовать 'onstart'? –

+0

android app framework вызывает методы обратного вызова Activity, такие как onCreate(), onResume() и другие. если вы хотите, чтобы какой-то код выполнялся каждый раз, когда активность приложения была перенесена на передний план, используйте onResume(). Подробнее об этом обратном вызове см. На странице https://developer.android.com/guide/components/activities/activity-lifecycle.html – AADProgramming

+0

Предлагаю вам задать отдельный вопрос, где вы предоставите [mcve] и объясните, ** в подробно **, что означает «это не работает одинаково». – CommonsWare

ответ

0

Я понимаю, что вы хотите, чтобы onCreate() вызывался каждый раз, когда приложение открывается, но нет. Это связано с тем, что ваше приложение все еще будет в откликах, когда вы его снова откроете.

  1. Когда вы открываете приложение, когда оно уже существует в recents, вызывается вызываемый onStart(). Попробуйте добавить свою логику в onStart().
  2. Если вы хотите, чтобы только вызов onCreate() вызывался каждый раз, тогда вы должны удалить из recents при нажатии дома. Для этого необходимо внести изменения в Manifest тьфу на activity.Try используя ниже для inManifets деятельности:

    андроида: clearTaskOnLaunch = "истинный"

    андроида: finishOnTaskLaunch = "истинный"

+0

Я попробую номер 2. Номер 1 не является вариантом, так как код в onResume не работает так, как он делает в onCreate (тот же код). – Laura

+0

Да. Это будет работать..!! Надеюсь, это помогло. –

+0

К сожалению, это не работает для меня. – Laura

-1

Просто позвоните onResume, это сделает трюк.

@Override 
protected void onResume() { 
    super.onResume(); 
    // TODO: do what ever you want 
} 

Посмотрите на этом сайте: Activity-lifecycle concepts

+2

Вы вызываете неправильный супер – Submersed

+0

Я знаю, что это способ, но приложение делает что-то хорошее при запуске (onCreate), а при повторном открытии (onResume) оно должно делать то же самое, но это не так. Поэтому я хотел бы, чтобы он вызывал onCreate каждый раз, когда приложение открывается (либо запускать, либо повторно открывать) – Laura

1

при закрытии приложения (с помощью кнопки домой)

Это не «закрыть приложение », для любого типичного определения« close ». Ближайшая аналогия, в настольной ОС, сводит к минимуму приложение.

Как я могу убедиться, что каждый раз, когда приложение открыто на CreateControl()?

У вас нет. Вместо этого вы используете другие lifecycle methods, которые являются более подходящими, например onStart(), которые будут называться как после onCreate() (когда активность сначала создается) и, когда активность возвращается на передний план из-за того, что она была в фоновом режиме.

+0

Я знаю, что это не закрывает приложение. Если есть подходящий способ закрыть приложение (и, возможно, это процесс), повторное открытие приложения вызовет onCreate, я хотел бы узнать об этом. Я знаю, что могу переопределить onstart, но дело в том, что приложение не действует одинаково при повторном открытии приложения, как при запуске приложения. – Laura

+0

@Laura: «Если есть подходящий способ закрыть приложение (и, возможно, это процесс), повторное открытие приложения вызовет onCreate, я хотел бы узнать об этом» - это не подходящее решение, IMHO. – CommonsWare

0

Я положил System.exit(1) в функцию onStop().После открытия приложения из последних приложений он запускает onCreate().

Так что это сработало для меня.

 Смежные вопросы

  • Нет связанных вопросов^_^