jamen
jamen

Reputation: 423

What is the difference between getIntent() and getting intent from savedInstanceState?

Hi all I'm trying out the android passing of intents between 2 classes and I've realized there are 2 methods to passing intents ,

The first is using getIntent method here:

Bundle extras = getIntent().getExtras();
mRowId = (extras != null) ? extras.getLong(DrugsDbAdapter.KEY_ROWID) : null;

And the second method is accessing the savedInstanceState:

mRowId = (savedInstanceState != null) savedInstanceState.getLong(DrugsDbAdapter.KEY_ROWID) : null;

In both methods I'm trying to access the RowId which I can then use to fetchData. Whats the difference between both methods ? Which one is better ?

Upvotes: 14

Views: 9820

Answers (2)

nicholas.hauschild
nicholas.hauschild

Reputation: 42849

getIntent() is used to tell you which Intent started this Activity. It is accessible anywhere in the Activity. It has a Bundle, but it also has other metadata.

onSaveInstanceState(Bundle) passes you a Bundle, to persist instance variables in your app until next start. This Bundle only comes in onCreate() and onRestoreInstanceState(), and it has no other data.

Upvotes: 11

ernazm
ernazm

Reputation: 9258

The first case gives you the extras of the intent that started this activity, while the second one is used when onCreate is invoked the 2nd and more time, for example, on device rotate. That bundle should be populated in onSaveInstanceState.

Upvotes: 12

Related Questions