Intereting Posts
Как вы можете динамически обновлять цвет SeekBar? Как выровнять по центру название или ярлык в действии? Длинное касание на поверхности (Android) Как я могу нарисовать текст в виде круговой диаграммы в Android Android возвращает пустую строку HTTP Android MediaCodec не может декодировать wma-файлы Цветная коробка с буквами a la Gmail Пробел изображения появляется даже после Ellipsize в текстовом элементе Android Сохранение и чтение растровых изображений / изображений из внутренней памяти в Android Проблемы с примером Kontakt.io Beacon Сокеты, потоки и службы в android, как заставить их работать вместе? Nullpointerexcepiton на курсор при выборе фотографии из галереи на фрагменте диалога Как узнать, выполнила ли Proguard свою работу Ошибка GoogleJsonResponseException: 404 не найден с использованием брандмауэра конечной точки приложения google В чем разница между thread.sleep и systemclock.sleep. И какой из них следует использовать в AsyncTask?

Когда вызывается метод onCreate () приложения?

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

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

Мой вопрос в том, что когда я начинаю работу без какого-либо взаимодействия с DefaultApplication , будет DefaultApplication onCreate() 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> 

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

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

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

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

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

Обратите внимание, что если какая-либо служба определена для запуска в другом процессе, например, с помощью android:process= то приложение onCreate() приложения будет onCreate() снова для этого процесса.

Например, см. Метод класса приложений Android onCreate, вызываемый несколько раз