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开发者_C百科 then use to fetchData. Whats the difference between both methods ? Which one is better ?
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
.
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.
精彩评论