13

Is onCreate() called when a class object that extends Activity is created? Or is it only called when an activity is started, for example over startActivity(...)?

Mehdi Charife
  • 722
  • 1
  • 7
  • 22
ShrimpCrackers
  • 4,388
  • 17
  • 50
  • 76

4 Answers4

20

To answer you question, for a class that extends activity, if you try to instantiate that Activity by normal means ( MyActivity ma = new MyActivity(); ) the onCreate() method WILL NOT be called. Only if you start the Activity with an intent will the method be called.

SBerg413
  • 14,515
  • 6
  • 62
  • 88
15

According to the developer.android.com the onCreate get called when activity is started. see details here

States of an activity

Nipuna
  • 6,846
  • 9
  • 64
  • 87
3

Each activity in an application goes through its own lifecycle. Once and only once when an activity is created, is the onCreate() function executed.

Check this Activity Life Cycle

Avi Turner
  • 10,234
  • 7
  • 48
  • 75
Venky
  • 11,049
  • 5
  • 49
  • 66
2

i think that in Android , you cant write something like this :

AClassThatExtendedAnActivity instance = new AClassThatExtendedAnActivity();

the only way that you can use to launch an activity is passing with an intent to start your activity .

the creation of the instance is encapsulated on the super.onCreate(savedInstanceState); when you override the method onCreate(Bundle savedInstanceState);

Regards ,

Houcine
  • 24,001
  • 13
  • 56
  • 83
  • But we have learned in OOPs that only way to access the methods of a class is through the object of the class, so isn't this against that? Please throw some light into this. – Sreekanth Karumanaghat Dec 25 '19 at 08:40
  • 1
    We do not call the onCreate() method ; it is called automatically when you start an Activity from intent. – Houcine Dec 25 '19 at 19:46
  • I understand that, but suppose there is a public method. methodXYZ() in Activity A and I can call this method from another activity say Activity B in its onCreate() so is there any use for this kind of pattern? – Sreekanth Karumanaghat Dec 26 '19 at 14:32
  • This kind of pattern is useless and you should avoid it. in order to call a public methode from another activity, i think it depends on what do want to do in that method, i.e you can use startActivityForResult, or use callbacks pattern to communicate between the two activities. I think you should throw an eye on this thread : https://stackoverflow.com/questions/19666572/how-to-call-a-method-in-another-activity-from-activity. – Houcine Dec 27 '19 at 02:00
  • I understand that it is useless, but if we are coming from the OOPs world, isn't that we have been taught? I think I never read about a call back method in the OOPs concepts, so if I were a newbie into android say with an OOPs background, then is there any intuitive way I could understand these concepts intuitively? – Sreekanth Karumanaghat Dec 27 '19 at 06:37