日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

简单讲述一下Intent的传值过程

發(fā)布時(shí)間:2024/7/5 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单讲述一下Intent的传值过程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

昨晚帶女友Android入門,她本是照著一本書敲得,可以運(yùn)行,后來她自己憑思維自己寫了一個(gè),然后出現(xiàn)了值沒有傳過來的問題,然后簡(jiǎn)單的了解了一下Intent是如何傳遞數(shù)據(jù)的。

我們的例子是這樣的:

由A Activity通過startActivityForResult方法啟動(dòng)B Activity,然后由B將某個(gè)字符串返回給A,由于我女友的疏忽,key不小心寫錯(cuò)了,當(dāng)時(shí)我們使勁的找,卻沒發(fā)現(xiàn)問題,當(dāng)時(shí)是這么找的,下面這段代碼是B回傳字符串值給A:

Intent intent = new Intent(); <span style="white-space:pre"> </span>intent.putExtra("helloWorld", "HelloWorld"); <span style="white-space:pre"> </span>setResult(Activity.RESULT_OK, intent); 當(dāng)時(shí)的調(diào)試信息是這樣的:


Intent里面沒有任何問題,我們確定已經(jīng)把要傳遞的值放了進(jìn)去,并且intent.mExtras.mMap的值不為空,但是,我們從A里面拿到的Intent對(duì)象intent.mExtras.mMap的值卻為空!!這樣我們百思不得其解,看:


注意到data.mExtras.mMap后面了嗎?它居然是Null!!!這頓時(shí)就讓我匪夷所思了,這是為什么呢,讓我們?nèi)ntent內(nèi)部一探究竟:

在Intent內(nèi)部有這么一段代碼:

public String getStringExtra(String name) {return mExtras == null ? null : mExtras.getString(name);}它是將數(shù)據(jù)放入一個(gè)Bundle屬性里面去了,那再去mExtras里面看看:


我們可以看到在Bundler內(nèi)部的mMap是有值的這個(gè)時(shí)候,咦?這是怎么回事呢?我們可以看到在mMap.get方法執(zhí)行之前有個(gè)方法叫:unparcel();,那是不是在這個(gè)方法內(nèi)部有蹊蹺呢?

/*** If the underlying data are stored as a Parcel, unparcel them* using the currently assigned class loader.*//* package */ synchronized void unparcel() {if (mParcelledData == null) {return;}int N = mParcelledData.readInt();if (N < 0) {return;}if (mMap == null) {mMap = new HashMap<String, Object>(N);}mParcelledData.readMapInternal(mMap, N, mClassLoader);mParcelledData.recycle();mParcelledData = null;}
我們?cè)?unparcel 方法內(nèi)部看到,這個(gè)時(shí)候mMap是被賦值并且使用readMapInternal方法從某個(gè)地方讀了出來(具體怎么讀暫不去深究)。噢,原來就是這樣。你們明白了嘛?


總結(jié)

以上是生活随笔為你收集整理的简单讲述一下Intent的传值过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。