1.putExtra()
適合傳遞單個(gè)數(shù)據(jù)的場(chǎng)景,如一個(gè)字符串垦页,一個(gè)id,一個(gè)對(duì)象等;
intent.putExtra("author":"insong不二");
2. putExtras()
用于傳遞多個(gè)數(shù)據(jù)的場(chǎng)景盏袄。例如只是傳遞用戶id和訂單id供接收方調(diào)用(可能用于查詢接口等操作):
bundle.putInt("order_id",12345);
bundle.putInt("u_id",22);
intent.putExtras(bundle);
那么問題來了薄啥,如果要傳遞的字段很多,而且剛好是一個(gè)對(duì)象垄惧,例如選定好友列表中的某個(gè)好友對(duì)象,然后傳遞該對(duì)象铣口。
思路一:傳遞name和age過去觉壶,在intent接收方重新構(gòu)造friend;
假如這個(gè)對(duì)象有兩個(gè)屬性铜靶,還可以傳遞兩個(gè)屬性一個(gè)個(gè)putExtras傳遞過去叔遂,如果有10個(gè)呢争剿?或者目前只有兩個(gè),以后隨著需求增長(zhǎng)到10個(gè)呢旗芬?這種放法就很明顯要較大改動(dòng)代碼捆蜀。
思路二:傳遞一整個(gè)person過去幔嫂,這需要進(jìn)行序列化誊薄,可用Serializable和Parcelable或者JSON傳遞。傳送門:簡(jiǎn)書作者ghwaphon寫的 Android -- Intent傳遞對(duì)象的三種方法
結(jié)論:
考慮到拓展性切心,即使現(xiàn)在是傳遞單個(gè)數(shù)據(jù)片吊,未來也可能傳遞多個(gè)數(shù)據(jù)俏脊,為了代碼的統(tǒng)一性,方便后人接手或者N個(gè)月后的自己還能看懂代碼(其實(shí)insong不二就是懶)爷贫;不二一般是統(tǒng)一使用putExtras();eg:
bundle.putInt("id",1);
bundle.putString("author","insong不二");
bundle.putSerializable("friend",friend);//以后拓展friend里面的字段無需修改這
//....以后相加與上面不相關(guān)的直接這里往下不斷加
intent.putExtras(bundle);