2015-07-02 3 views
2
public class MyApplication extends Application{ 

@Override 
public void onCreate() 
{ 
    super.onCreate(); 
    Log.d("*******:", "onCreate"); 
}} 

public class MainActivity extends ActionBarActivity{ 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
}} 

<application 
    android:name=".MyApplication" 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

Когда приложение открывается в первый раз, метод OnCreate() в MyApplication было названо, но когда я завершаю операцию (нажмите кнопку «Назад»), а затем снова откройте приложение, я обнаружил, что метод onCreate() в MyApplication не был вызван.Android Application-> OnCreate() не вызывается, когда возобновлять App

И это странно, что если я «убью» приложение в системном фоновом режиме, а затем снова его открою, я обнаружил, что метод onCreate() может быть вызван снова.

Я не знаю, почему, и я хочу получить действие, когда пользователь снова откроет мое приложение, может ли кто-нибудь помочь? Благодаря!

+0

Думаю, вам нужно добавить отчет журнала, чтобы мы могли лучше понять вашу проблему. – Biswajit

+0

@Biswajit Это довольно простая демонстрация, я думаю, что отчет журнала может быть не нужен. Мое описание может быть не очень ясным, я отредактирую свое описание вопроса. Спасибо в любом случае. – MichaelYe

+0

вам нужно понять жизненный цикл активности ... – Fasiha

ответ

4

MyApplication распространяется Application. Так что имеет смысл, что onCreate не вызывается при повторном открытии приложения, как приложение в памяти

Если расширялся ActivityonCreate будет вызываться при повторном открытии

+0

Хорошо, я вижу, Большое спасибо :) – MichaelYe

3

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

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

После завершения операции onCreate() система быстро вызывает методы onStart() и onResume().

Если у вас есть обработка, которую вы хотите выполнить несколько раз, вы должны поместить ее в другое место, например, в метод @OnResume.

protected void onRestart() { 
    Log.d("*******:", "onRestart"); 
    super.onRestart(); 

} 

protected void onResume() { 
    super.onResume(); 
    Log.d("*******:", "OnREsume"); 
} 

Надеюсь, вы понимаете !!

+0

Теперь я понимаю, Большое спасибо! – MichaelYe