本技術(shù)涉及計(jì)算機(jī),并且更具體地,涉及計(jì)算機(jī)中一種確定組件進(jìn)出棧的方法、裝置、電子設(shè)備和存儲(chǔ)介質(zhì)。
背景技術(shù):
1、目前,在android系統(tǒng)開(kāi)發(fā)過(guò)程中,用戶界面(user?interface,ui)全部是通過(guò)activity管理的。但是由于activity管理的是一個(gè)完整的頁(yè)面,難以動(dòng)態(tài)地添加或者移除部分ui,導(dǎo)致activity在管理ui時(shí)靈活性較差。
2、基于這個(gè)問(wèn)題,在android系統(tǒng)開(kāi)發(fā)過(guò)還引入了fragment,fragment允許開(kāi)發(fā)者將復(fù)雜的ui拆分成更小、更獨(dú)立的模塊,可以動(dòng)態(tài)地添加、移除或者替換,使得ui切換更加靈活。
3、上述fragment在使用過(guò)程中,無(wú)法判斷當(dāng)前的fragment是否已經(jīng)進(jìn)出棧,可能會(huì)導(dǎo)致fragment出現(xiàn)重復(fù)加載的問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)提供了一種確定組件進(jìn)出棧的方法、裝置、電子設(shè)備和存儲(chǔ)介質(zhì),該方法能夠在切換fragment時(shí),對(duì)fragment是否進(jìn)出棧進(jìn)行判斷,只有當(dāng)fragment未出?;蛘呶催M(jìn)棧時(shí),才對(duì)fragment執(zhí)行出棧操作或者進(jìn)棧操作,避免了fragment重復(fù)進(jìn)出棧的問(wèn)題,降低了電子設(shè)備的內(nèi)存占用,能夠有效提高電子設(shè)備的響應(yīng)性。
2、第一方面,提供了一種確定組件進(jìn)出棧的方法,該方法包括:響應(yīng)于在顯示界面的組件切換操作,獲取該顯示界面顯示的當(dāng)前組件的組件屬性,以及該組件切換操作對(duì)應(yīng)的目標(biāo)組件的組件屬性,該當(dāng)前組件為該目標(biāo)組件或者未切換之前的初始組件,該組件屬性用于表示組件的標(biāo)識(shí)、類型和存儲(chǔ)位置;根據(jù)該當(dāng)前組件的組件屬性和該目標(biāo)組件的組件屬性,判斷該初始組件是否出棧或者該目標(biāo)組件是否進(jìn)棧;在該初始組件未出棧的情況下,對(duì)該初始組件執(zhí)行出棧操作并在該顯示界面顯示該目標(biāo)組件,或者,在該目標(biāo)組件未進(jìn)棧的情況下,對(duì)該目標(biāo)組件執(zhí)行進(jìn)棧操作并在該顯示界面顯示該目標(biāo)組件。
3、上述技術(shù)方案中,在用戶切換組件過(guò)程中,本技術(shù)實(shí)施例提出了一種確定組件進(jìn)出棧的方法,電子設(shè)備接收到組件切換操作時(shí),可以獲取顯示界面顯示的當(dāng)前組件的組件屬性,以及該組件切換操作指示的目標(biāo)組件的組件屬性。電子設(shè)備根據(jù)當(dāng)前組件的組件屬性和目標(biāo)組件的組件屬性,判斷初始組件是否出?;蛘吣繕?biāo)組件是否進(jìn)棧。本技術(shù)中由于每一個(gè)組件的組件屬性具有唯一性。因此,上述根據(jù)當(dāng)前組件的組件屬性和目標(biāo)組件的組件屬性,能夠準(zhǔn)確判斷當(dāng)前組件具體為初始組件還是目標(biāo)組件,以確定初始組件是否出?;蛘吣繕?biāo)組件是否進(jìn)棧,從而實(shí)現(xiàn)了對(duì)組件進(jìn)出棧的準(zhǔn)確高效識(shí)別。當(dāng)初始組件未出?;蛘吣繕?biāo)組件未進(jìn)棧時(shí),電子設(shè)備才顯示目標(biāo)組件,能夠避免目標(biāo)組件的重復(fù)加載,減少了組件所占用的空間,降低了組件切換過(guò)程中意外狀況的發(fā)生概率,增加了電子設(shè)備的響應(yīng)度。此外,基于上述方式,即使在組件切換過(guò)程中用戶連續(xù)多次執(zhí)行組件切換操作,也不會(huì)一直加載目標(biāo)組件,提升了用戶的體驗(yàn)。
4、結(jié)合第一方面,在某些可能的實(shí)現(xiàn)方式中,該根據(jù)該當(dāng)前組件的組件屬性和該目標(biāo)組件的組件屬性,判斷該初始組件是否出棧或者該目標(biāo)組件是否進(jìn)棧之前,該方法還包括:確定該組件切換操作的類型,該組件切換操作的類型用于表示該組件切換操作所對(duì)應(yīng)的組件切換方式;以及,該根據(jù)該當(dāng)前組件的組件屬性和該目標(biāo)組件的組件屬性,判斷該初始組件是否出?;蛘咴撃繕?biāo)組件是否進(jìn)棧,包括:在該組件切換操作的類型為前進(jìn)類型的情況下,根據(jù)該當(dāng)前組件的組件屬性和該目標(biāo)組件的組件屬性,判斷該目標(biāo)組件是否進(jìn)棧;或者,在該組件切換操作的類型為后退類型的情況下,根據(jù)該當(dāng)前組件的組件屬性和該目標(biāo)組件的組件屬性,判斷該初始組件是否出棧。
5、結(jié)合第一方面和上述實(shí)現(xiàn)方式,在某些可能的實(shí)現(xiàn)方式中,該組件屬性包括組件類名和組件標(biāo)簽,該根據(jù)該當(dāng)前組件的組件屬性和該目標(biāo)組件的組件屬性,判斷該目標(biāo)組件是否進(jìn)棧,包括:根據(jù)該當(dāng)前組件的組件標(biāo)簽和該目標(biāo)組件的組件類名,確定該當(dāng)前組件是否為該目標(biāo)組件;在該當(dāng)前組件為該目標(biāo)組件的情況下,確定該目標(biāo)組件已進(jìn)棧;在該當(dāng)前組件不為該目標(biāo)組件的情況下,確定該目標(biāo)組件未進(jìn)棧。
6、結(jié)合第一方面和上述實(shí)現(xiàn)方式,在某些可能的實(shí)現(xiàn)方式中,該組件屬性包括組件類名和組件標(biāo)簽,該根據(jù)該當(dāng)前組件的組件屬性和該目標(biāo)組件的組件屬性,判斷該初始組件是否出棧,包括:根據(jù)該當(dāng)前組件的組件標(biāo)簽和該目標(biāo)組件的組件類名,確定該當(dāng)前組件是否為該目標(biāo)組件;在該當(dāng)前組件為該目標(biāo)組件的情況下,確定該初始組件已出棧;在該當(dāng)前組件不為該目標(biāo)組件的情況下,確定該初始組件未出棧。
7、結(jié)合第一方面和上述實(shí)現(xiàn)方式,在某些可能的實(shí)現(xiàn)方式中,該根據(jù)該當(dāng)前組件的組件標(biāo)簽和該目標(biāo)組件的組件類名,確定該當(dāng)前組件是否為該目標(biāo)組件,包括:確定該當(dāng)前組件的組件標(biāo)簽和該目標(biāo)組件的組件類名是否相同;在該當(dāng)前組件的組件標(biāo)簽和該目標(biāo)組件的組件類名相同的情況下,確定該當(dāng)前組件為該目標(biāo)組件;在該當(dāng)前組件的組件標(biāo)簽和該目標(biāo)組件的組件類名不同的情況下,確定該當(dāng)前組件不為該目標(biāo)組件。
8、結(jié)合第一方面和上述實(shí)現(xiàn)方式,在某些可能的實(shí)現(xiàn)方式中,該在該初始組件未出棧的情況下,對(duì)該初始組件執(zhí)行出棧操作并在該顯示界面顯示該目標(biāo)組件,或者,在該目標(biāo)組件未進(jìn)棧的情況下,對(duì)該目標(biāo)組件執(zhí)行進(jìn)棧操作并在該顯示界面顯示該目標(biāo)組件,包括:在該初始組件未出棧的情況下,將該初始組件的組件事務(wù)記錄從回退棧移除,以及將該目標(biāo)組件的視圖狀態(tài)配置為顯示,以使該顯示界面顯示該目標(biāo)組件;在該目標(biāo)組件未進(jìn)棧的情況下,根據(jù)該組件切換操作,生成該目標(biāo)組件的組件事務(wù)記錄;將該目標(biāo)組件的組件事務(wù)記錄添加至該回退棧,以及將該目標(biāo)組件的視圖狀態(tài)配置為顯示,以使該顯示界面顯示該目標(biāo)組件。
9、結(jié)合第一方面和上述實(shí)現(xiàn)方式,在某些可能的實(shí)現(xiàn)方式中,該該組件屬性包括組件類名和組件標(biāo)簽,該響應(yīng)于在顯示界面的組件切換操作,獲取該顯示界面顯示的當(dāng)前組件的組件屬性,以及該組件切換操作對(duì)應(yīng)的目標(biāo)組件的組件屬性之前,該方法還包括:對(duì)于多個(gè)預(yù)設(shè)組件中的任一預(yù)設(shè)組件,將該預(yù)設(shè)組件的組件標(biāo)簽配置為該預(yù)設(shè)組件的組件類名;以及,該響應(yīng)于在顯示界面的組件切換操作,獲取該顯示界面顯示的當(dāng)前組件的組件屬性,包括:響應(yīng)于該組件切換操作,獲取該當(dāng)前組件的導(dǎo)航目的地;根據(jù)該當(dāng)前組件的導(dǎo)航目的地,獲取該當(dāng)前組件的組件屬性;獲取該目標(biāo)組件的導(dǎo)航目的地;根據(jù)該目標(biāo)組件的導(dǎo)航目的地,獲取該目標(biāo)組件的組件屬性。
10、上述技術(shù)方案中,在確定組件是否進(jìn)出棧之前,本技術(shù)中預(yù)先將每一個(gè)組件的組件標(biāo)簽配置為組件類名,也即是說(shuō),每一個(gè)組件的組件標(biāo)簽和組件類名是相同的。上述過(guò)程為后續(xù)判斷組件進(jìn)出棧提供了基礎(chǔ)。不同于組件類名,由于組件標(biāo)簽不需要進(jìn)行硬編碼,具有靈活配置性,因此配置組件標(biāo)簽不會(huì)對(duì)代碼的運(yùn)行產(chǎn)生影響。在根據(jù)當(dāng)前組件的組件標(biāo)簽和目標(biāo)組件的組件類名,判斷當(dāng)前組件是否為目標(biāo)組件時(shí),由于每一個(gè)組件的組件屬性唯一,即每一個(gè)組件的組件標(biāo)簽和組件類名也是唯一的。因此,提供將當(dāng)前組件的組件標(biāo)簽和目標(biāo)組件的組件類名比較,在不影響應(yīng)用程序的運(yùn)行的前提下,能夠快速確定組件是否進(jìn)出棧。
11、第二方面,提供了一種確定組件進(jìn)出棧的裝置,該裝置包括:屬性獲取模塊,用于響應(yīng)于在顯示界面的組件切換操作,獲取該顯示界面顯示的當(dāng)前組件的組件屬性,以及該組件切換操作對(duì)應(yīng)的目標(biāo)組件的組件屬性,該當(dāng)前組件為該目標(biāo)組件或者未切換之前的初始組件,該組件屬性用于表示組件的標(biāo)識(shí)、類型和存儲(chǔ)位置;進(jìn)出棧判斷模塊,用于根據(jù)該當(dāng)前組件的組件屬性和該目標(biāo)組件的組件屬性,判斷該初始組件是否出棧或者該目標(biāo)組件是否進(jìn)棧;組件顯示模塊,用于在該初始組件未出棧的情況下,對(duì)該初始組件執(zhí)行出棧操作并在該顯示界面顯示該目標(biāo)組件,或者,在該目標(biāo)組件未進(jìn)棧的情況下,對(duì)該目標(biāo)組件執(zhí)行進(jìn)棧操作并在該顯示界面顯示該目標(biāo)組件。
12、結(jié)合第二方面,在某些可能的實(shí)現(xiàn)方式中,該根據(jù)該當(dāng)前組件的組件屬性和該目標(biāo)組件的組件屬性,判斷該初始組件是否出?;蛘咴撃繕?biāo)組件是否進(jìn)棧之前,該裝置還包括:操作類型確定模塊,用于確定該組件切換操作的類型,該組件切換操作的類型用于表示該組件切換操作所對(duì)應(yīng)的組件切換方式;以及,該進(jìn)出棧判斷模塊具體用于:在該組件切換操作的類型為前進(jìn)類型的情況下,根據(jù)該當(dāng)前組件的組件屬性和該目標(biāo)組件的組件屬性,判斷該目標(biāo)組件是否進(jìn)棧;或者,在該組件切換操作的類型為后退類型的情況下,根據(jù)該當(dāng)前組件的組件屬性和該目標(biāo)組件的組件屬性,判斷該初始組件是否出棧。
13、結(jié)合第二方面和上述實(shí)現(xiàn)方式,在某些可能的實(shí)現(xiàn)方式中,該組件屬性包括組件類名和組件標(biāo)簽,該進(jìn)出棧判斷模塊還用于:根據(jù)該當(dāng)前組件的組件標(biāo)簽和該目標(biāo)組件的組件類名,確定該當(dāng)前組件是否為該目標(biāo)組件;在該當(dāng)前組件為該目標(biāo)組件的情況下,確定該目標(biāo)組件已進(jìn)棧;在該當(dāng)前組件不為該目標(biāo)組件的情況下,確定該目標(biāo)組件未進(jìn)棧。
14、結(jié)合第二方面和上述實(shí)現(xiàn)方式,在某些可能的實(shí)現(xiàn)方式中,該組件屬性包括組件類名和組件標(biāo)簽,該進(jìn)出棧判斷模塊還用于:根據(jù)該當(dāng)前組件的組件標(biāo)簽和該目標(biāo)組件的組件類名,確定該當(dāng)前組件是否為該目標(biāo)組件;在該當(dāng)前組件為該目標(biāo)組件的情況下,確定該初始組件已出棧;在該當(dāng)前組件不為該目標(biāo)組件的情況下,確定該初始組件未出棧。
15、結(jié)合第二方面和上述實(shí)現(xiàn)方式,在某些可能的實(shí)現(xiàn)方式中,該進(jìn)出棧判斷模塊還用于:確定該當(dāng)前組件的組件標(biāo)簽和該目標(biāo)組件的組件類名是否相同;在該當(dāng)前組件的組件標(biāo)簽和該目標(biāo)組件的組件類名相同的情況下,確定該當(dāng)前組件為該目標(biāo)組件;在該當(dāng)前組件的組件標(biāo)簽和該目標(biāo)組件的組件類名不同的情況下,確定該當(dāng)前組件不為該目標(biāo)組件。
16、結(jié)合第二方面和上述實(shí)現(xiàn)方式,在某些可能的實(shí)現(xiàn)方式中,該組件顯示模塊具體用于:在該初始組件未出棧的情況下,將該初始組件的組件事務(wù)記錄從回退棧移除,以及將該目標(biāo)組件的視圖狀態(tài)配置為顯示,以使該顯示界面顯示該目標(biāo)組件;在該目標(biāo)組件未進(jìn)棧的情況下,根據(jù)該組件切換操作,生成該目標(biāo)組件的組件事務(wù)記錄;將該目標(biāo)組件的組件事務(wù)記錄添加至該回退棧,以及將該目標(biāo)組件的視圖狀態(tài)配置為顯示,以使該顯示界面顯示該目標(biāo)組件。
17、結(jié)合第二方面和上述實(shí)現(xiàn)方式,在某些可能的實(shí)現(xiàn)方式中,該組件屬性包括組件類名和組件標(biāo)簽,該響應(yīng)于在顯示界面的組件切換操作,獲取該顯示界面顯示的當(dāng)前組件的組件屬性,以及該組件切換操作對(duì)應(yīng)的目標(biāo)組件的組件屬性之前,該裝置還包括:配置模塊,用于對(duì)于多個(gè)預(yù)設(shè)組件中的任一預(yù)設(shè)組件,將該預(yù)設(shè)組件的組件標(biāo)簽配置為該預(yù)設(shè)組件的組件類名;以及,該屬性獲取模塊具體用于:響應(yīng)于該組件切換操作,獲取該當(dāng)前組件的導(dǎo)航目的地;根據(jù)該當(dāng)前組件的導(dǎo)航目的地,獲取該當(dāng)前組件的組件屬性;獲取該目標(biāo)組件的導(dǎo)航目的地;根據(jù)該目標(biāo)組件的導(dǎo)航目的地,獲取該目標(biāo)組件的組件屬性。
18、第三方面,提供了一種電子設(shè)備,包括存儲(chǔ)器和處理器。該存儲(chǔ)器用于存儲(chǔ)可執(zhí)行程序代碼,該處理器用于從存儲(chǔ)器中調(diào)用并運(yùn)行該可執(zhí)行程序代碼,使得該電子設(shè)備執(zhí)行上述第一方面或第一方面任意一種可能的實(shí)現(xiàn)方式中的方法。
19、第四方面,提供了一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括:計(jì)算機(jī)程序代碼,當(dāng)該計(jì)算機(jī)程序代碼在計(jì)算機(jī)上運(yùn)行時(shí),使得該計(jì)算機(jī)執(zhí)行上述第一方面或第一方面任意一種可能的實(shí)現(xiàn)方式中的方法。
20、第五方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序代碼,當(dāng)該計(jì)算機(jī)程序代碼在計(jì)算機(jī)上運(yùn)行時(shí),使得該計(jì)算機(jī)執(zhí)行上述第一方面或第一方面任意一種可能的實(shí)現(xiàn)方式中的方法。