startActivityForResult的requestCode真的可以隨便定義么丈屹?

在項目中,我們經(jīng)常要用到startActivityForResult判族,里面有個參數(shù)requestCode躺盛,經(jīng)常接手別人的項目會發(fā)現(xiàn)這個requestCode大家定義的都很奇怪,經(jīng)常還會看到之前開發(fā)者留下這么一個注釋: 用于XXXX時獲得Activity結(jié)果的Request代碼形帮,開發(fā)者可以隨意修改槽惫。那么真的可以隨意修改嗎?

  • 最近在接入韓國OneStroe的SDK用于支付辩撑,從網(wǎng)上照搬過來的代碼定義requestCode的如下
    用于購買時獲得Activity結(jié)果的Request代碼界斜,開發(fā)者可以隨意修改。
    private val PURCHASE_REQUEST_CODE = 1024

SDK的使用方法代碼大部分都是從網(wǎng)上copy下來的合冀,并且很順利的就接入成功了各薇,讓我覺得,也沒什么難度嘛君躺。但是作為一個有追求的開發(fā)峭判,我不能一模一樣的copy代碼啊开缎,我得改改吧,于是我把之前的注釋刪一刪朝抖,變量命名改一改啥箭,盡可能的讓自己覺得,這個功能是我自己實現(xiàn)的治宣。還有什么可以改的急侥?我一開上面這個requestCode,都注釋我可以隨意更改侮邀, 而且我是個有個性的程序員坏怪,我要是連requestCode都一模一樣使用人家的豈不是顯得我太追求了么?我反手就改成

 private val PURCHASE_REQUEST_CODE = 987654321

結(jié)果再次運(yùn)行的時候绊茧。铝宵。就界面毫無反應(yīng)
我開始慌了....
于是我回退到剛copy下來的代碼跑了一下,又可以了华畏。換成我刪了注釋改了變量名的代碼就毫無反應(yīng)鹏秋,也不崩潰。小菜雞開始慌了....

  • 猛然驚醒亡笑,我是一名有追求的程序員侣夷,我根據(jù)我敏銳的嗅覺,不報錯那肯定是把異常捕獲了仑乌,點(diǎn)進(jìn)去OneStore的拉起支付源碼看到如下代碼
try {
      PurchaseClient.this.launchPurchaseFlowSync(apiVersion, activity, requestCode, productId, productName, productType, payload, gameUserId, promotionApplicable, listener);
} catch (Throwable var2) {
     PurchaseClient.this.handleException(handler, listener, var2);
}

不如我所料百拓,設(shè)置斷點(diǎn),通過debug發(fā)現(xiàn)這個var2的Throwable 為
"can only user lower 16 bits for requestcode",大概就知道報錯的原因了晰甚,下面用一段完整(百度)的話作為回答:
因為requestCode不能為負(fù)數(shù)衙传,且不能大于16個字節(jié),要小于2的16次方厕九,范圍為0~65535
上源碼
FragmentActivity-722

  @Override
    public void startActivityForResult(Intent intent, int requestCode) {
        // If this was started from a Fragment we've already checked the upper 16 bits were not in
        // use, and then repurposed them for the Fragment's index.
        if (!mStartedActivityFromFragment) {
            if (requestCode != -1) {
                checkForValidRequestCode(requestCode);
            }
        }
        super.startActivityForResult(intent, requestCode);
    }

requestCode 為 -1的時候應(yīng)該是有特殊的定義且不討論蓖捶,checkForValidRequestCode這個方法應(yīng)該是對requestCode 進(jìn)行檢查了

    /**
     * Checks whether the given request code is a valid code by masking it with 0xffff0000. Throws
     * an {@link IllegalArgumentException} if the code is not valid.
     */
    static void checkForValidRequestCode(int requestCode) {
        if ((requestCode & 0xffff0000) != 0) {
            throw new IllegalArgumentException("Can only use lower 16 bits for requestCode");
        }
    }

所以這個requestCode。扁远。俊鱼。并不能隨便定義啊。穿香。又踩坑了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末亭引,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子皮获,更是在濱河造成了極大的恐慌焙蚓,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異购公,居然都是意外死亡萌京,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門宏浩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來知残,“玉大人,你說我怎么就攤上這事比庄∏竺茫” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵佳窑,是天一觀的道長制恍。 經(jīng)常有香客問我,道長神凑,這世上最難降的妖魔是什么净神? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮溉委,結(jié)果婚禮上鹃唯,老公的妹妹穿的比我還像新娘。我一直安慰自己瓣喊,他們只是感情好坡慌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著型宝,像睡著了一般八匠。 火紅的嫁衣襯著肌膚如雪絮爷。 梳的紋絲不亂的頭發(fā)上趴酣,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機(jī)與錄音坑夯,去河邊找鬼岖寞。 笑死,一個胖子當(dāng)著我的面吹牛柜蜈,可吹牛的內(nèi)容都是我干的仗谆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼淑履,長吁一口氣:“原來是場噩夢啊……” “哼隶垮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起秘噪,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤狸吞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蹋偏,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡便斥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了威始。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枢纠。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖黎棠,靈堂內(nèi)的尸體忽然破棺而出晋渺,到底是詐尸還是另有隱情,我是刑警寧澤脓斩,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布些举,位于F島的核電站,受9級特大地震影響俭厚,放射性物質(zhì)發(fā)生泄漏户魏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一挪挤、第九天 我趴在偏房一處隱蔽的房頂上張望叼丑。 院中可真熱鬧,春花似錦扛门、人聲如沸鸠信。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽星立。三九已至,卻和暖如春葬凳,著一層夾襖步出監(jiān)牢的瞬間绰垂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工火焰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留劲装,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓昌简,卻偏偏與公主長得像占业,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纯赎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354