161

Possible Duplicate:
Android Activity Life Cycle - difference between onPause() and OnStop()

I was wondering - what is the difference between onCreate() and onStart() methods?

I think that onStart() is a redundant method. onCreate() will ALWAYS be called (At least in my last two projects).

Can any one explain the difference?

Community
  • 1
  • 1
iTurki
  • 16,042
  • 20
  • 85
  • 131

2 Answers2

364

Take a look on life cycle of Activity enter image description here

Where

***onCreate()***

Called when the activity is first created. This is where you should do all of your normal static set up: create views, bind data to lists, etc. This method also provides you with a Bundle containing the activity's previously frozen state, if there was one. Always followed by onStart().

***onStart()***

Called when the activity is becoming visible to the user. Followed by onResume() if the activity comes to the foreground, or onStop() if it becomes hidden.

And you can write your simple class to take a look when these methods call

public class TestActivity extends Activity {
    /** Called when the activity is first created. */

    private final static String TAG = "TestActivity";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.i(TAG, "On Create .....");
    }
    /* (non-Javadoc)
    * @see android.app.Activity#onDestroy()
    */
    @Override
    protected void onDestroy() { 
        super.onDestroy();
        Log.i(TAG, "On Destroy .....");
    }
    /* (non-Javadoc)
    * @see android.app.Activity#onPause()
    */
    @Override
    protected void onPause() { 
        super.onPause();
        Log.i(TAG, "On Pause .....");
    }

    /* (non-Javadoc)
    * @see android.app.Activity#onRestart()
    */
    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i(TAG, "On Restart .....");
    }

    /* (non-Javadoc)
    * @see android.app.Activity#onResume()
    */
    @Override
    protected void onResume() {
        super.onResume();
        Log.i(TAG, "On Resume .....");
    }

    /* (non-Javadoc)
    * @see android.app.Activity#onStart()
    */
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, "On Start .....");
    }
    /* (non-Javadoc)
    * @see android.app.Activity#onStop()
    */
    @Override
    protected void onStop() {
        super.onStop();
        Log.i(TAG, "On Stop .....");
    }
}

Hope this will clear your confusion.

And take a look here for details.

Lifecycle Methods in Details is a very good example and demo application, which is a very good article to understand the life cycle.

Pankaj Kumar
  • 81,071
  • 26
  • 167
  • 187
29

onCreate() method gets called when activity gets created, and its called only once in whole Activity life cycle. where as onStart() is called when activity is stopped... I mean it has gone to background and its onStop() method is called by the os. onStart() may be called multiple times in Activity life cycle.More details here

Alan Dunning
  • 1,311
  • 8
  • 16
ngesh
  • 13,241
  • 4
  • 43
  • 59
  • 1
    `onCreate()` method gets called when activity created and `onStart()` method called when activity comes from `onPause()` or `onResume()` . – Rehan Sarwar Jul 27 '17 at 05:49
  • `onCreate()` , will be called in two scenarios , one when activity is first created, and second when activity goes through configuration changes. It is mandatory to implement `onCreate()` in our activity. `onStart()` can be called multiple times. It is not mandatory to implement `onStart()`. – Danger Jun 18 '21 at 07:35