En mi aplicación de Android, tengo una clase DefaultApplication
que se extiende android.app.Application
, y en su onCreate()
Ato algunos servicios que serán utilizados por mis otras actividades en esta aplicación.¿Cuándo se llama al método onCreate() de la aplicación?
También tengo un BroadcastReceiver
que escucha y recibe mensajes C2DM. Cuando este receptor recibe un mensaje cuando la aplicación no se está ejecutando, activará un cuadro de diálogo que muestra el próximo mensaje y comenzará una Actividad de mi aplicación.
Mi pregunta es, cuando empiezo una actividad sin ninguna interacción con DefaultApplication
, ¿se llamará a DefaultApplication
onCreate()
porque se ha iniciado una actividad de esa aplicación?
Estas son la definición y el Manifiesto de mi 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;
}
}
}
Manifiesto se ve así:
<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>
sí, funciona esto, no he visto otra cosa ... – atasoyh
yo no unserstand qué extiendes 'Application'? ¿No deberías extender 'Activity'? – Caner
@LAS_VEGAS En el resto de mi DefaultApplication, almaceno algunos datos y defino algunos métodos que se usan en toda la aplicación. Copié solo una parte de aquí. –