Подтвердить что ты не робот

Когда метод Application onCreate() вызывается?

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

Также у меня есть BroadcastReceiver, который прослушивает и принимает сообщения C2DM. Когда этот приемник получит сообщение, когда приложение не запущено, оно запустит диалоговое окно, в котором будет отображаться следующее сообщение, и оно запустит действие моего приложения.

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

Вот определение и манифест моего DefaultApplication:

public class DefaultApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        doBindService();

    }

    void doBindService() {

        // Establish a connection with the service. We use an explicit
        // class name because we want a specific service implementation that
        // we know will be running in our own process (and thus won't be
        // supporting component replacement by other applications).

        bindService(new Intent(DefaultApplication.this, SocketService.class),
                socketServiceConnection, Context.BIND_AUTO_CREATE);

        mIsBound = true;
    }

    void doUnbindService() {
        if (mIsBound) {
            // Detach our existing connection.
            unbindService(socketServiceConnection);
            mIsBound = false;
        }
    }
}

Манифест выглядит так:

<application android:icon="@drawable/icon" android:label="@string/app_name"
        android:name="com.mypackage.DefaultApplication"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:debuggable="true">
<service android:name="com.mypackage.services.SocketService"></service>
<activity android:name="TestActivity"
            android:screenOrientation="landscape"></activity>
</application>
4b9b3361

Ответ 1

Только в первый раз.

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

Но для последующих запусков Activity onCreate() приложения не будет вызываться.

Ответ 2

Вы можете найти официальный ответ, когда onCreate называется здесь.

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