Quand l'Application onCreate() la méthode appelée?
Dans mon application Android, j'ai un DefaultApplication
classe qui s'étend android.app.Application
, et dans son onCreate()
je la lie de certains services qui seront utilisés par mes autres Activités dans cette application.
Aussi, j'ai un BroadcastReceiver
qui est à l'écoute et reçoit C2DM Messages. Lorsque ce récepteur reçoit un message lorsque l'application n'est pas en cours d'exécution, il va déclencher une boîte de dialogue qui affiche le prochain message, et il va commencer une Activité de mon application.
Ma question est, quand je démarre une activité sans aucune interaction avec DefaultApplication
, mon DefaultApplication
's onCreate()
appelée parce que l'Activité de cette application a commencé?
Voici la définition et le Manifeste de mon 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;
}
}
}
Manifeste ressemble à ceci:
<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>
- oui, ça fonctionne comme ça, je n'ai pas vu d'autre d'autre...
- Je n'ai pas unserstand pourquoi vous étendre
Application
? Ne devriez-vous pas étendreActivity
? - Dans le reste de ma DefaultApplication-je stocker des données et de définir un certain nombre de méthodes qui sont utilisées à l'échelle de l'Application. J'ai copié une partie seulement de il ici.
Vous devez vous connecter pour publier un commentaire.
Seulement la première fois.
Lorsque l'Activité est démarré et l'application n'est pas chargé, puis les deux
onCreate()
méthodes seront appelées.Mais pour un démarrage ultérieur de l'Activité, la
onCreate()
de l'application ne sera pas appelé.Vous pouvez trouver une réponse officielle lors de la
onCreate
est appelé ici.Notez que si un service est défini pour s'exécuter dans d'autres processus, par ex. avec
android:process=
puis de l'ApplicationonCreate()
sera de nouveau appelée pour ce processus.Voir, par exemple, Application Android de la classe de la méthode onCreate être appelée plusieurs fois