getIntent()和从savedInstanceState获取意图有什么区别?

jam*_*men 14 android android-intent

大家好我正在尝试2个类之间的android传递意图,我已经意识到有两种传递意图的方法,

第一个是在这里使用getIntent方法:

Bundle extras = getIntent().getExtras();
mRowId = (extras != null) ? extras.getLong(DrugsDbAdapter.KEY_ROWID) : null;
Run Code Online (Sandbox Code Playgroud)

第二种方法是访问savedInstanceState:

mRowId = (savedInstanceState != null) savedInstanceState.getLong(DrugsDbAdapter.KEY_ROWID) : null;
Run Code Online (Sandbox Code Playgroud)

在这两种方法中,我都试图访问RowId,然后我可以使用它来获取fetchData.这两种方法有什么区别?哪一个更好 ?

ern*_*azm 12

第一种情况为您提供了启动此活动的意图的额外内容,而第二种情况onCreate则在第二次和更多次调用时使用,例如,在设备旋转时.应该填充该捆绑包onSaveInstanceState.


nic*_*ild 11

getIntent()用于告诉你从哪个Intent开始Activity.它可以在任何地方访问Activity.它有一个Bundle,但它也有其他元数据.

onSaveInstanceState(Bundle)通过你Bundle,在你的应用程序中保存实例变量,直到下一次开始.这Bundle只是进来onCreate()onRestoreInstanceState(),并没有其他数据.