close

1.getExtras()返回值類型是Bundle,但是,分析代碼會發現,Intent的成員變數中有一個是Bundle的引用變數。特別地,getExtras()會返回這個引用變數指向的Bundle物件的拷貝的引用,就是說getExtras()當中有了new的動作,返回的引用指向另外一個Bundle物件。因此,即使調用了getExtras().clear()後,Intent的成員變數引用指向的Bundle沒有發生變化,下次調用getExtras(),仍然會得到一個沒有被clearBundle物件的引用。

2.問題場景:onCreategetIntent().getExtras().clear(), 下次進入onCreate, getIntent().getExtras()的引用指向的Bundle物件,仍然包含資料,造成困惑。定位辦法: getIntent().getExtras().clear(), 緊接著列印出getIntent().getExtras().toString(), 就會發現clear操作沒有達到預期的效果。

arrow
arrow
    全站熱搜

    moneyd 發表在 痞客邦 留言(0) 人氣()