現(xiàn)象描述
從應(yīng)用市場打開快應(yīng)用,點擊返回時,系統(tǒng)添加桌面圖標只出現(xiàn)一次彈窗。但是使用deeplink打開跳轉(zhuǎn)頁面,點擊返回時,系統(tǒng)添加桌面圖標會出現(xiàn)一次彈窗后再閃一次。
問題分析
現(xiàn)網(wǎng)正常通過Deeplink、網(wǎng)頁跳轉(zhuǎn)方式進入快應(yīng)用時,使用系統(tǒng)創(chuàng)建桌面圖標時,出現(xiàn)一次彈框,不會再閃一次。對Deeplink跳轉(zhuǎn)的頁面代碼進行分析,發(fā)現(xiàn)頁面代碼里對onBackPress(監(jiān)聽返回按鈕動作)函數(shù)進行了重寫處理。
其中this.entryDirect為Deeplink跳轉(zhuǎn)時攜帶的參數(shù)。
onBackPress是用戶點擊返回按鈕時觸發(fā)的,當(dāng)返回true表示頁面按應(yīng)用自己的返回邏輯處理,返回false表示按默認的返回邏輯處理,不返回值則和返回false一樣,按默認的返回邏輯處理。
在這段代碼中,開發(fā)者在onBackPress中判斷為Deeplink進入快應(yīng)用時,調(diào)用this.app.exit()退出應(yīng)用,此時會觸發(fā)finish事件,而開發(fā)者沒有在onBackPress返回true,所以按默認的返回邏輯處理,也觸發(fā)了finish事件??鞈?yīng)用中心在監(jiān)聽到finish事件后,就會彈框引導(dǎo)用戶創(chuàng)建圖標,從而導(dǎo)致出現(xiàn)兩次彈框。
解決方法
對界面onBackPress函數(shù)代碼進行修改,調(diào)用this.app.exit()退出應(yīng)用后,不再使用默認按鈕返回邏輯。
建議與總結(jié)
當(dāng)頁面需要使用onBackPress(監(jiān)聽返回按鈕動作)函數(shù)處理自己邏輯時,需要在函數(shù)最后返回true,否則處理完onBackPress代碼后默認會走系統(tǒng)返回邏輯,容易導(dǎo)致異常。