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

时间:2011-05-26 13:17:04

标签: android android-intent

大家好我正在尝试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。这两种方法有什么区别?哪一个更好?

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:11)

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

onSaveInstanceState(Bundle)向您传递Bundle,以便在您的应用中保留实例变量,直到下次开始。此Bundle仅来自onCreate()onRestoreInstanceState(),并且没有其他数据。