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

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

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

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

第二种方法是访问savedInstanceState:

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

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

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

getIntent()用于告诉您哪个Intent启动了此Activity 。 它可以在Activity任何位置访问。 它有一个Bundle ,但它也有其他元数据。

onSaveInstanceState(Bundle)传递一个Bundle ,在你的应用程序中保存实例variables直到下一次启动。 这个Bundle只有onCreate()onRestoreInstanceState() ,它没有其他数据。