Когда вызывается метод Application onCreate()?
В моем приложении для Android у меня есть DefaultApplication
класс, который расширяется android.app.Application
и в своем onCreate()
Я связываю некоторые сервисы, которые будут использоваться моими другими действиями в этом приложении.
Также у меня есть BroadcastReceiver
который слушает и получает сообщения C2DM. Когда этот получатель получает сообщение, когда приложение не запущено, он запускает диалоговое окно, которое показывает предстоящее сообщение, и запускает Активность моего приложения.
У меня вопрос, когда я начинаю деятельность без какого-либо взаимодействия с DefaultApplication
будет мой DefaultApplication
"s 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>
3 ответа
Только в первый раз.
Когда активность запущена и приложение не загружено, тогда оба onCreate()
методы будут вызваны.
Но для последующих запусков Деятельности onCreate()
приложения не будут называться.
Вы можете найти официальный ответ, когда onCreate
называется здесь.
Вызывается при запуске приложения до того, как будут созданы какие-либо действия, сервисы или объекты получателя (кроме поставщиков контента). Реализации должны быть максимально быстрыми (например, с использованием отложенной инициализации состояния), поскольку время, потраченное на эту функцию, напрямую влияет на производительность запуска первого действия, службы или получателя в процессе. Если вы переопределите этот метод, обязательно вызовите super.onCreate().
Обратите внимание, что если какой-либо сервис определен для запуска в другом процессе, например, с android:process=
затем приложение onCreate()
будет вызван снова для этого процесса.
Например, см. Метод класса Android Application onCreate, вызываемый несколько раз.