大家好我正在尝试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。这两种方法有什么区别?哪一个更好?
答案 0 :(得分:12)
第一种情况为您提供了启动此活动的意图的额外内容,而第二种情况则在第二次和更多时间调用onCreate
时使用,例如,在设备旋转时。该捆绑包应填入onSaveInstanceState
。
答案 1 :(得分:11)
getIntent()用于告诉您哪个Intent
启动了此Activity
。它可以在Activity
的任何位置访问。它有一个Bundle
,但它还有其他元数据。
onSaveInstanceState(Bundle)
向您传递Bundle
,以便在您的应用中保留实例变量,直到下次开始。此Bundle
仅来自onCreate()
和onRestoreInstanceState()
,并且没有其他数据。