Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When does Application's onCreate() method get called?

In my Android application, I have a DefaultApplication class which extends android.app.Application, and in its onCreate() I bind some services which will be used by my other Activities in this app.

Also I have a BroadcastReceiver which listens and receives C2DM Messages. When this receiver receives a message when the application is not running, it will fire a dialog which shows the upcoming message and it will start an Activity of my application.

My question is, when I start an activity without any interaction with DefaultApplication, will my DefaultApplication's onCreate() get called because an Activity of that application has started?

Here are the definition and Manifest of my 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;         }     } } 

Manifest looks like this:

<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> 
like image 612
Yasin YILDIRIM Avatar asked Oct 07 '11 11:10

Yasin YILDIRIM


People also ask

Is onCreate only called once?

@OnCreate is only for initial creation, and thus should only be called once. If you have any processing you wish to complete multiple times you should put it elsewhere, perhaps in the @OnResume method.

Is onCreate always called?

The Android documentation says the method onCreate is called only when is starting or when is destroyed. Why is this happening? Thanks!! Regars.

What is used of onCreate () method?

onCreate(Bundle savedInstanceState) Function in Android: When an Activity first call or launched then onCreate(Bundle savedInstanceState) method is responsible to create the activity.

How many times onCreate is called?

OnCreate will only be called one time for each lifetime of the Activity. However, there are a number of situations that can cause your activity to be killed and brought back to life. Thus, onCreate will be called again.


2 Answers

Only the first time.

When Activity is started and application is not loaded, then both onCreate() methods will be called.

But for subsequent starts of Activity, the onCreate() of application will not be called.

like image 70
Peter Knego Avatar answered Sep 24 '22 08:09

Peter Knego


You can find an official answer when onCreate is called here.

Called when the application is starting, before any activity, service, or receiver objects (excluding content providers) have been created. Implementations should be as quick as possible (for example using lazy initialization of state) since the time spent in this function directly impacts the performance of starting the first activity, service, or receiver in a process. If you override this method, be sure to call super.onCreate().

like image 44
Ashwin N Bhanushali Avatar answered Sep 23 '22 08:09

Ashwin N Bhanushali