欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于Android的彈框提示方法及裝置與流程

文檔序號(hào):11276010閱讀:221來(lái)源:國(guó)知局
基于Android的彈框提示方法及裝置與流程

本申請(qǐng)涉及通信領(lǐng)域,尤其涉及一種基于android的彈框提示方法及裝置。



背景技術(shù):

在android系統(tǒng)中,對(duì)于一些需要向用戶輸出彈框的事件,通過(guò)可以由系統(tǒng)向用戶輸出填充了提示文案的彈框來(lái)提示用戶。例如,該事件可以是單點(diǎn)登錄事件。所謂單點(diǎn)登陸,通常是指只允許用戶在一臺(tái)設(shè)備上登陸其賬號(hào),一旦用戶在其它設(shè)備上使用相同的登錄賬號(hào)登陸,需要把用戶從當(dāng)前的設(shè)備上踢出登陸態(tài)。當(dāng)系統(tǒng)檢測(cè)到了單點(diǎn)登錄事件時(shí),可以向用戶輸出彈框提示用戶當(dāng)前登錄賬號(hào)已在其它設(shè)備上登錄,此時(shí)該彈框中的提示文案可以包括用戶被踢出登錄的原因。然而,在相關(guān)技術(shù)中,android系統(tǒng)在向用戶輸出彈框時(shí),輸出的彈框可能會(huì)被其它彈框或者其它頁(yè)面所覆蓋,從而影響用戶對(duì)系統(tǒng)終端的app或者基本功能的使用。



技術(shù)實(shí)現(xiàn)要素:

本申請(qǐng)?zhí)岢鲆环N基于android的彈框提示方法,該方法包括:

在監(jiān)聽(tīng)到彈框提示的觸發(fā)事件時(shí),啟動(dòng)activity彈框組件輸出提示框;其中,該activity彈框組件的啟動(dòng)模式被預(yù)配置為單任務(wù)模式;

判斷該activity彈框組件是否被其它activity組件覆蓋;

當(dāng)該activity彈框組件被其它activity組件覆蓋時(shí),重新啟動(dòng)該activity彈框組件,以觸發(fā)將該activity彈框組件移至activity堆棧頂部使得所述提 示框在系統(tǒng)前臺(tái)顯示。

可選的,所述判斷該activity彈框組件是否被其它activity組件覆蓋包括:

判斷所述activity彈框組件的onpause或者onstop方法是否被調(diào)用;

當(dāng)所述activity彈框組件的onpause或者onstop方法被調(diào)用時(shí),確定該activity彈框組件被其它activity組件覆蓋。

可選的,所述當(dāng)該activity彈框組件被其它activity組件覆蓋時(shí),重新啟動(dòng)該activity彈框組件包括:

當(dāng)所述activity彈框組件的onpause方法被調(diào)用,基于所述onpause方法重新啟動(dòng)該activity彈框組件;

當(dāng)所述activity彈框組件的onstop方法被調(diào)用時(shí),判斷所述activity彈框組件的onpause方法是否已被調(diào)用,如果所述onpause方法未被調(diào)用,則基于所述onstop方法重新啟動(dòng)該activity彈框組件。

可選的,所述基于所述onpause方法或者所述onstop方法重新啟動(dòng)該activity彈框組件包括:

判斷所述onpause方法或者所述onstop方法的調(diào)用是否是由針對(duì)所述activity彈框組件的關(guān)閉事件所觸發(fā);

如果所述onpause方法或者所述onstop方法的調(diào)用不是由針對(duì)所述activity彈框組件的關(guān)閉事件所觸發(fā),則基于所述onpause方法或者所述onstop方法重新啟動(dòng)該activity彈框組件。

可選的,所述方法還包括:

如果所述onpause方法或者所述onstop方法的調(diào)用是由針對(duì)所述activity彈框組件的關(guān)閉事件所觸發(fā),則針對(duì)所述activity彈框組件執(zhí)行正常關(guān)閉。

本申請(qǐng)還提出一種基于android的彈框提示裝置,該裝置包括:

啟動(dòng)模塊,用于在監(jiān)聽(tīng)到彈框提示的觸發(fā)事件時(shí),啟動(dòng)activity彈框組件輸出提示框;其中,該activity彈框組件的啟動(dòng)模式被預(yù)配置為單任務(wù)模 式;

判斷模塊,用于判斷該activity彈框組件是否被其它activity組件覆蓋;

重啟模塊,用于在該activity彈框組件被其它activity組件覆蓋時(shí),重新啟動(dòng)該activity彈框組件,以觸發(fā)將該activity彈框組件移至activity堆棧頂部使得所述提示框在系統(tǒng)前臺(tái)顯示。

可選的,所述判斷模塊具體用于:

判斷所述activity彈框組件的onpause或者onstop方法是否被調(diào)用;

當(dāng)所述activity彈框組件的onpause或者onstop方法被調(diào)用時(shí),確定該activity彈框組件被其它activity組件覆蓋。

可選的,所述重啟模塊具體用于:

當(dāng)所述activity彈框組件的onpause方法被調(diào)用,基于所述onpause方法重新啟動(dòng)該activity彈框組件;

當(dāng)所述activity彈框組件的onstop方法被調(diào)用時(shí),判斷所述activity彈框組件的onpause方法是否已被調(diào)用,如果所述onpause方法未被調(diào)用,則基于所述onstop方法重新啟動(dòng)該activity彈框組件。

可選的,所述重啟模塊進(jìn)一步用于:

判斷所述onpause方法或者所述onstop方法的調(diào)用是否是由針對(duì)所述activity彈框組件的關(guān)閉事件所觸發(fā);

如果所述onpause方法或者所述onstop方法的調(diào)用不是由針對(duì)所述activity彈框組件的關(guān)閉事件所觸發(fā),則基于所述onpause方法或者所述onstop方法重新啟動(dòng)該activity彈框組件。

可選的,所述裝置還包括:

關(guān)閉模塊,用于在所述onpause方法或者所述onstop方法的調(diào)用是由針對(duì)所述activity彈框組件的關(guān)閉事件所觸發(fā)時(shí),針對(duì)所述activity彈框組件執(zhí)行正常關(guān)閉。

本申請(qǐng)中,通過(guò)在監(jiān)聽(tīng)到彈框提示的觸發(fā)事件時(shí),啟動(dòng)activity彈框組件輸出提示框;其中,該activity彈框組件的啟動(dòng)模式被預(yù)配置為單任務(wù)模 式;判斷該activity彈框組件是否被其它activity組件覆蓋;當(dāng)該activity彈框組件被其它activity組件覆蓋時(shí),重新啟動(dòng)該activity彈框組件,以觸發(fā)將該activity彈框組件移至activity堆棧頂部使得所述提示框在系統(tǒng)前臺(tái)顯示,實(shí)現(xiàn)了當(dāng)啟動(dòng)activity彈框組件向用戶輸出了提示框后,可以確保該提示框不被覆蓋,始終在系統(tǒng)前臺(tái)顯示。

附圖說(shuō)明

圖1是本申請(qǐng)一實(shí)施例提供的一種基于android的彈框提示方法的流程圖;

圖2是本申請(qǐng)一實(shí)施例提供的一種基于android的彈框提示裝置的邏輯框圖;

圖3是本申請(qǐng)一實(shí)施例提供的承載所述一種基于android的彈框提示裝置的終端的硬件結(jié)構(gòu)圖。

具體實(shí)施方式

在相關(guān)技術(shù)中,android系統(tǒng)在向用戶輸出彈框時(shí),通??梢酝ㄟ^(guò)如下方式實(shí)現(xiàn):

在示出的一種實(shí)現(xiàn)方式中,android系統(tǒng)可以利用android系統(tǒng)中的window組件來(lái)進(jìn)行彈框。

通過(guò)window組件來(lái)彈框,可以實(shí)現(xiàn)在任意頁(yè)面彈框,且不被其他頁(yè)面覆蓋,然而通過(guò)window組件來(lái)彈框,通常支持用戶對(duì)彈框進(jìn)行設(shè)置,因此當(dāng)用戶通過(guò)手動(dòng)設(shè)置在系統(tǒng)中將彈框禁掉,則會(huì)導(dǎo)致系統(tǒng)無(wú)法進(jìn)行彈框。

在示出的另一種實(shí)現(xiàn)方式中,android系統(tǒng)可以利用activity組件來(lái)進(jìn)行彈框。

在android系統(tǒng)中,activity組件是一個(gè)負(fù)責(zé)與用戶進(jìn)行交互的組件,該組件可以提供一個(gè)交互界面,并在交互界面上顯示一些交互控件(比如按鈕、彈窗等),用戶可以通過(guò)操作這些交互控件與終端進(jìn)行交互,終端在后臺(tái)可 以監(jiān)聽(tīng)用戶針對(duì)這些交互控件的事件,來(lái)完成與本次交互對(duì)應(yīng)的任務(wù)。終端通過(guò)activity組件來(lái)彈框,可以實(shí)現(xiàn)將系統(tǒng)中任意的activity組件作為彈框的主體,在任意頁(yè)面中來(lái)進(jìn)行彈框。然而,由于activity組件通常是以activity堆棧的形態(tài)進(jìn)行管理的,一旦該activity組件在activity堆棧中被其它activity組件所覆蓋,即該其它activity組件占據(jù)activity堆棧頂部,而該activity組件不再處于activity堆棧的頂部時(shí),該activity組件輸出的彈框?qū)?huì)被其它彈框或者界面覆蓋,因而無(wú)法在系統(tǒng)前臺(tái)進(jìn)行顯示,對(duì)系統(tǒng)的app或者基本功能的使用造成影響。

在示出的另一種實(shí)現(xiàn)方式中,android系統(tǒng)可以在一個(gè)固定的頁(yè)面進(jìn)行彈框。

然而在一個(gè)固定的頁(yè)面進(jìn)行彈框,無(wú)法實(shí)現(xiàn)實(shí)現(xiàn)在任意界面進(jìn)行彈框的目的,因此不夠靈活,而且交互體驗(yàn)不好。例如,以在登錄頁(yè)面進(jìn)行彈框?yàn)槔敵龅膹椏蛑悄茉诘卿涰?yè)面進(jìn)行顯示,系統(tǒng)向用戶輸出彈框后,如果系統(tǒng)前臺(tái)顯示的為其它頁(yè)面,那么只有用戶在主動(dòng)進(jìn)行頁(yè)面切換,回到登錄頁(yè)面才能夠查看到系統(tǒng)輸出的彈框,從而會(huì)導(dǎo)致系統(tǒng)輸出的彈框無(wú)法及時(shí)的通知到用戶。

有鑒于此,本申請(qǐng)?zhí)岢鲆环N基于android的彈框提示方法,通過(guò)在監(jiān)聽(tīng)到彈框提示的觸發(fā)事件時(shí),啟動(dòng)activity彈框組件輸出提示框;其中,該activity彈框組件的啟動(dòng)模式被預(yù)配置為單任務(wù)模式;判斷該activity彈框組件是否被其它activity組件覆蓋;當(dāng)該activity彈框組件被其它activity組件覆蓋時(shí),重新啟動(dòng)該activity彈框組件,以觸發(fā)將該activity彈框組件移至activity堆棧頂部使得所述提示框在系統(tǒng)前臺(tái)顯示;由于在本申請(qǐng)中,activity彈框組件為單任務(wù)模式,因此當(dāng)該activity彈框組件被重新啟動(dòng)后,可以立即被移至activity堆棧頂部,從而在啟動(dòng)activity彈框組件向用戶輸出了提示框后,可以確保該提示框不被覆蓋,始終在系統(tǒng)前臺(tái)顯示。

同時(shí),由于本申請(qǐng)不再基于android系統(tǒng)中的window組件進(jìn)行彈框,不再支持用戶對(duì)彈框進(jìn)行設(shè)置,因此可以避免由于用戶通過(guò)手動(dòng)設(shè)置在系統(tǒng)中將彈框禁掉導(dǎo)致無(wú)法進(jìn)行彈框的問(wèn)題。

另外,由于本申請(qǐng)通過(guò)activity彈框組件進(jìn)行彈框,因此可以實(shí)現(xiàn)將系統(tǒng)中任意的activity組件作為主體,在任意頁(yè)面中來(lái)進(jìn)行彈框,從而具有很高的靈活性。

下面通過(guò)具體實(shí)施例并結(jié)合具體的應(yīng)用場(chǎng)景對(duì)本申請(qǐng)進(jìn)行描述。

請(qǐng)參考圖1,圖1是本申請(qǐng)一實(shí)施例提供的一種基于android的彈框提示方法,應(yīng)用于終端,所述方法執(zhí)行以下步驟:

步驟101,在監(jiān)聽(tīng)到彈框提示的觸發(fā)事件時(shí),啟動(dòng)activity彈框組件輸出提示框;其中,該activity彈框組件的啟動(dòng)模式被預(yù)配置為單任務(wù)模式;

在本例中,上述終端可以包括搭載android系統(tǒng)的智能終端;例如,智能手機(jī)、平板電腦等移動(dòng)終端等。

上述彈框提示的觸發(fā)事件可以包括終端系統(tǒng)監(jiān)聽(tīng)到的需要面向用戶輸出彈框提示的事件。其中,在不同的應(yīng)用場(chǎng)景中,上述彈框提示的觸發(fā)事件可以分別包括不同類(lèi)型的事件。

例如,在單點(diǎn)登錄的應(yīng)用場(chǎng)景中,上述彈框提示的觸發(fā)事件可以包括單點(diǎn)登錄事件。在該應(yīng)用場(chǎng)景中,當(dāng)用戶使用相同登錄賬號(hào)在其它終端上登錄時(shí),當(dāng)前終端可以退出登錄狀態(tài),并面向用戶輸出一個(gè)提示框提示本次退出登錄狀態(tài)的原因。

又如,在呼叫來(lái)電接聽(tīng)的應(yīng)用場(chǎng)景中,上述彈框提示的觸發(fā)事件可以包括呼叫來(lái)電事件。當(dāng)終端的系統(tǒng)監(jiān)聽(tīng)到呼叫來(lái)電時(shí),可以向用戶輸出一個(gè)提示框提示用戶接收到了來(lái)電,用戶此時(shí)可以針對(duì)該提示框進(jìn)行相應(yīng)的操作(比如向上滑動(dòng)或者向下滑動(dòng))來(lái)接聽(tīng)來(lái)電或者掛斷來(lái)電。

在本例中,終端在向用戶進(jìn)行彈框時(shí),仍然可以利用預(yù)設(shè)的activity彈框組件來(lái)實(shí)現(xiàn)。當(dāng)終端監(jiān)聽(tīng)到彈框提示的觸發(fā)事件后,可以啟動(dòng)activity彈框組件,創(chuàng)建一個(gè)用于輸出提示框的activity實(shí)例,然后基于該實(shí)例將提示文案填充到提示框中向用戶輸出。

在android系統(tǒng)中,activity組件的啟動(dòng)模式(launchmode)通常包standard模式,singletop模式,singletask模式(即單任務(wù)模式)以及 singleinstance模式等四種模式。

其中,當(dāng)activity組件的啟動(dòng)模式為singletask模式時(shí),該activity彈框組件將只允許唯一的activity實(shí)例運(yùn)行。

在singletask模式下,該activity彈框組件被啟動(dòng)后,系統(tǒng)會(huì)判斷activity堆棧中是否已經(jīng)存在與該activity彈框組件對(duì)應(yīng)的activity實(shí)例,由于當(dāng)前activity堆棧中已經(jīng)存在與該activity彈框組件對(duì)應(yīng)的activity實(shí)例,因此在singletask模式下系統(tǒng)將不會(huì)再新建activity實(shí)例,會(huì)將想要覆蓋該activity彈框組件的其它activity組件彈出activity堆棧,并將已經(jīng)存在的該activity示例所對(duì)應(yīng)的activity彈框組件重新移至activity堆棧的頂部。在這種情況下,基于該activity實(shí)例輸出的提示框?qū)?huì)重新在系統(tǒng)前臺(tái)顯示而不被覆蓋。

基于此,在本例中,為了使activity彈框組件輸出的提示框不被其它提示框或者頁(yè)面所覆蓋,可以在初始狀態(tài)下,將該activity彈框組件的啟動(dòng)模式設(shè)置為singletask模式。

步驟102,判斷該activity彈框組件是否被其它activity組件覆蓋;

在android系統(tǒng)中,activity組件的生命周期中通常包括running狀態(tài)(運(yùn)行狀態(tài))、pause狀態(tài)(暫停狀態(tài))、stop狀態(tài)(停止?fàn)顟B(tài))以及destroy狀態(tài)(關(guān)閉)。

其中,running狀態(tài),是指activity組件處于可見(jiàn)并且可以和用戶進(jìn)行交互的狀態(tài)。當(dāng)activity組件啟動(dòng)后,初始狀態(tài)會(huì)處于running狀態(tài),此時(shí)會(huì)被放入在activity堆棧的頂部,在系統(tǒng)前臺(tái)(屏幕最前端)顯示。

pause狀態(tài),是指activity組件被其它的非全屏或者半透明的activity組件所覆蓋,不再處于activity堆棧頂部,但仍然處于可見(jiàn)并且可以和用戶進(jìn)行交互的狀態(tài)。

stop狀態(tài),是指activity組件被其它的activity組件完全覆蓋,不再處于activity堆棧頂部,該activity組件的交互界面被完全被隱藏的狀態(tài)。

destroy狀態(tài),只指activity組件被關(guān)閉銷(xiāo)毀的狀態(tài)。

其中,以上四種運(yùn)行狀態(tài)可以通過(guò)用戶針對(duì)該activity組件的操作來(lái)進(jìn) 行轉(zhuǎn)換。

在android系統(tǒng)中,當(dāng)activity組件啟動(dòng)后,如果用戶通過(guò)操作啟動(dòng)了新的activity組件,那么該新的activity組件會(huì)被移入activity堆棧頂部,對(duì)原有的該activity組件進(jìn)行覆蓋,此時(shí)系統(tǒng)會(huì)調(diào)用onpause方法將原有的activity組件轉(zhuǎn)換為pause狀態(tài)。

當(dāng)該原有的activity組件被完全覆蓋后,此時(shí)系統(tǒng)會(huì)調(diào)用onstop方法將該原有的activity組件轉(zhuǎn)換為stop狀態(tài)。

其中,當(dāng)該原有的activity組件處于pause狀態(tài)或者stop狀態(tài)時(shí),系統(tǒng)會(huì)在系統(tǒng)內(nèi)存不足的時(shí)候,通過(guò)調(diào)用ondestroy方法將該activity組件轉(zhuǎn)換為destroy狀態(tài)對(duì)該activity組件執(zhí)行關(guān)閉。

基于此,在示出的一種實(shí)施方式中,系統(tǒng)在判斷該activity彈框組件是否被其它activity組件覆蓋時(shí),可以通過(guò)判斷該activity彈框組件的onpause或者onstop方法是否被調(diào)用來(lái)實(shí)現(xiàn)。

當(dāng)該activity彈框組件的onpause或者onstop方法被調(diào)用時(shí),則可以確定當(dāng)前該activity彈框組件被其它activity組件覆蓋,不再處于堆棧頂部。

步驟103,當(dāng)該activity彈框組件被其它activity組件覆蓋時(shí),重新啟動(dòng)該activity彈框組件,以觸發(fā)將該activity彈框組件移至activity堆棧頂部使得所述提示框在系統(tǒng)前臺(tái)顯示。

在本例中,當(dāng)系統(tǒng)判斷出該activity彈框組件被其它activity組件覆蓋時(shí),可以重新啟動(dòng)該activity彈框組件。由于該activity彈框組件已經(jīng)被預(yù)配置為singletask模式,因此當(dāng)該activity彈框組件被重新啟動(dòng)后,系統(tǒng)會(huì)將想要覆蓋該activity彈框組件的其它activity組件彈出activity堆棧,此時(shí)該activity彈框組件將會(huì)被重新移至activity堆棧頂部,在這種情況下,基于該activity彈框組件唯一activity實(shí)例輸出的提示框?qū)?huì)重新在系統(tǒng)前臺(tái)顯示而不被覆蓋。

在示出的一種實(shí)施方式中,如果系統(tǒng)判斷出該activity彈框組件的onpause方法被調(diào)用,此時(shí)系統(tǒng)可以確認(rèn)該activity彈框組件被其它activity 組件覆蓋。

在這種情況下,可以在onpause方法中預(yù)先加載針對(duì)activity彈框組件的重啟邏輯;比如,開(kāi)發(fā)人員可以在onpause()方法中編輯用于針對(duì)activity彈框組件執(zhí)行重啟的執(zhí)行代碼。當(dāng)系統(tǒng)調(diào)用該onpause方法后,則可以重新啟動(dòng)該activity彈框組件。

在示出的另一種實(shí)施方式中,如果系統(tǒng)判斷出該activity彈框組件的onstop方法被調(diào)用,此時(shí)系統(tǒng)可以確認(rèn)該activity彈框組件被其它activity組件覆蓋。其中,該onstop方法也可以預(yù)先加載針對(duì)activity彈框組件的重啟邏輯。

在android系統(tǒng)中,系統(tǒng)在針對(duì)onpause方法和onstop方法進(jìn)行調(diào)用時(shí),通常是先調(diào)用onpause方法再調(diào)用onstop方法(該調(diào)用順序?yàn)閍ndroid系統(tǒng)的基本處理機(jī)制);然而,在一些應(yīng)用場(chǎng)景中,比如,并發(fā)彈框的場(chǎng)景(即當(dāng)該activity彈框組件輸出提示框的同時(shí),就有其它activity組件對(duì)該activity彈框組件輸出的提示框進(jìn)行覆蓋),系統(tǒng)可能會(huì)產(chǎn)生onpause方法和onstop方法調(diào)用順序上的異常,出現(xiàn)在onpause方法未調(diào)用的情況下繞過(guò)onpause方法而直接調(diào)用onstop方法的情況。

因此,針對(duì)這些異常的應(yīng)用場(chǎng)景,為了避免通過(guò)onstop方法中加載的重啟邏輯對(duì)該activity彈框組件進(jìn)行重復(fù)處理,系統(tǒng)在判斷出該activity彈框組件的onstop方法被調(diào)用時(shí),可以進(jìn)一步判斷該activity彈框組件的onpause方法是否已經(jīng)被調(diào)用,如果該activity彈框組件的onpause方法已經(jīng)被調(diào)用,表明該activity彈框組件已經(jīng)通過(guò)執(zhí)行onpause方法中加載的重啟邏輯進(jìn)行了處理,此時(shí)系統(tǒng)可以不再重復(fù)執(zhí)行該onstop方法中加載的重啟邏輯對(duì)該activity彈框組件進(jìn)行重復(fù)處理。

當(dāng)然,如果該activity彈框組件的onpause方法未被調(diào)用,此時(shí)系統(tǒng)可能發(fā)生了調(diào)用異常,系統(tǒng)可以正常運(yùn)行onstop方法中加載的重啟邏輯,重新啟動(dòng)該activity彈框組件。

其中,需要指出的是,系統(tǒng)在判斷該activity彈框組件的onpause方法 是否已經(jīng)被調(diào)用時(shí),可以通過(guò)在該activity彈框組件的類(lèi)文件中增加標(biāo)記,然后通過(guò)檢查類(lèi)文件中是否存在對(duì)應(yīng)的標(biāo)記來(lái)實(shí)現(xiàn)。

例如,在實(shí)現(xiàn)時(shí),當(dāng)系統(tǒng)調(diào)用onpause方法中加載的重啟邏輯對(duì)該activity彈框組件處理完成后,可以在該activity彈框組件的類(lèi)文件中增加一個(gè)標(biāo)記,該標(biāo)記用于表示該activity彈框組件已經(jīng)基于onpause方法中加載的重啟邏輯處理完成。

當(dāng)系統(tǒng)判斷出該activity彈框組件的onstop方法被調(diào)用,可以進(jìn)一步檢查該activity彈框組件的類(lèi)文件中是否存在上述標(biāo)記,來(lái)確認(rèn)該activity彈框組件的onpause方法是否已經(jīng)被調(diào)用。如果類(lèi)文件中存在上述標(biāo)記,表明該activity彈框組件已經(jīng)基于onpause方法中加載的重啟邏輯處理完成,不再需要重復(fù)處理。

可見(jiàn),通過(guò)這種方式,可以在onpause方法和onstop方法的調(diào)用順序異常的應(yīng)用場(chǎng)景中,避免通過(guò)onstop方法中加載的重啟邏輯對(duì)該activity彈框組件進(jìn)行重復(fù)處理。

以上實(shí)施例中,描述了系統(tǒng)通過(guò)判斷activity彈框組件的onpause或者onstop方法是否被調(diào)用,來(lái)確認(rèn)activity彈框組件是否其它activity被覆蓋,并在判斷出activity彈框組件被其它activity組件覆蓋時(shí),通過(guò)執(zhí)行onpause或者onstop方法加載的重啟邏輯重新啟動(dòng)該activity彈框組件,使得該activity彈框組件在預(yù)配置為singletask模式的情況下,可以被重新移至activity堆棧頂部,將輸出的提示框重新顯示在系統(tǒng)前臺(tái)不被覆蓋的詳細(xì)過(guò)程。

然而,在android系統(tǒng)中,系統(tǒng)除了會(huì)在activity彈框組件被其它activity組件被其它activity組件覆蓋時(shí),調(diào)用onpause方法或者onstop方法以外,當(dāng)用戶通常執(zhí)行正常的關(guān)閉事件,來(lái)關(guān)閉該activity彈框組件時(shí),系統(tǒng)也會(huì)調(diào)用onpause方法或者onstop方法。

例如,當(dāng)該activity組件處于running狀態(tài)時(shí),如果系統(tǒng)監(jiān)聽(tīng)到了用戶針對(duì)該activity組件的關(guān)閉事件,系統(tǒng)會(huì)按照順序調(diào)用onpause方法和onstop 方法將該activity組件依次裝換為pause狀態(tài)和stop狀態(tài),然后自動(dòng)調(diào)用ondestroy方法將該activity組件轉(zhuǎn)換為destroy狀態(tài)對(duì)該activity組件執(zhí)行關(guān)閉。

其中,上述關(guān)閉事件可以包括與用戶針對(duì)該activity彈框組件執(zhí)行的關(guān)閉操作對(duì)應(yīng)的事件;比如,以搭載android系統(tǒng)的觸屏智能手機(jī)為例,該關(guān)閉事件可以包括用戶針對(duì)手機(jī)上的返回鍵的點(diǎn)擊事件,即用戶可以通過(guò)點(diǎn)擊手機(jī)上的返回鍵,來(lái)關(guān)閉該activity彈框組件。當(dāng)手機(jī)系統(tǒng)在后臺(tái)監(jiān)聽(tīng)到用戶針對(duì)返回鍵的點(diǎn)擊事件時(shí),可以按照順序調(diào)用onpause方法和onstop方法將該activity組件依次裝換為pause狀態(tài)和stop狀態(tài),然后自動(dòng)調(diào)用ondestroy方法針對(duì)該activity組件執(zhí)行關(guān)閉。

可見(jiàn),在用戶針對(duì)該activity彈框組件進(jìn)行正常關(guān)閉的應(yīng)用場(chǎng)景中,由于對(duì)onpause方法或onstop方法的調(diào)用是由用戶的正常關(guān)閉操作所觸發(fā),而并不是由該activity彈框組件被其它activity組件覆蓋的事件所觸發(fā),因此如果系統(tǒng)仍然通過(guò)執(zhí)行該activity彈框組件的onpause方法或onstop方法中加載的重啟邏輯,重新啟動(dòng)該activity彈框組件,那么將會(huì)導(dǎo)致用戶的誤操作(即用戶想要關(guān)閉該activity彈框組件,但通過(guò)上述重啟邏輯卻重新啟動(dòng)了該activity彈框組件)。

因此,為了避免誤操作,當(dāng)系統(tǒng)判斷出該activity彈框組件的onpause方法或者onstop方法被調(diào)用時(shí),系統(tǒng)在基于該onpause方法或者onstop方法中加載的重啟邏輯重新啟動(dòng)該activity彈框組件之前,可以進(jìn)一步判斷該onpause方法或者onstop方法的調(diào)用是否是由用戶針對(duì)該activity彈框組件的關(guān)閉事件所觸發(fā)的。

如果該onpause方法或者onstop方法的調(diào)用是由用戶針對(duì)該activity彈框組件的關(guān)閉事件所觸發(fā)的,此時(shí)為針對(duì)該activity彈框組件的正常關(guān)閉流程,系統(tǒng)可以允許該activity彈框組件正常關(guān)閉,并按照針對(duì)該activity彈框組件的正常關(guān)閉流程進(jìn)行響應(yīng),自動(dòng)調(diào)用activity彈框組件的ondestroy方法關(guān)閉該ctivity彈框組件。

當(dāng)然,如果該onpause方法或者onstop方法的調(diào)用并不是由用戶針對(duì)該activity彈框組件的關(guān)閉事件所觸發(fā)的,此時(shí)系統(tǒng)可以正常的執(zhí)行onpause方法或者onstop方法中加載的重啟邏輯,重新啟動(dòng)該activity彈框組件,將該activity彈框組件移至activity堆棧的頂部。

其中,需要指出的是,系統(tǒng)在判斷上述onpause方法或者onstop方法的調(diào)用是否是由用戶針對(duì)該activity彈框組件的關(guān)閉事件所觸發(fā)的,仍然可以通過(guò)在該activity彈框組件的類(lèi)文件中增加標(biāo)記,然后通過(guò)檢查類(lèi)文件中是否存在對(duì)應(yīng)的標(biāo)記來(lái)實(shí)現(xiàn)。

例如,在實(shí)現(xiàn)時(shí),當(dāng)系統(tǒng)監(jiān)聽(tīng)到用戶針對(duì)該activity彈框組件的關(guān)閉事件,調(diào)用onpause方法以及onstop方法后,可以在該activity彈框組件的類(lèi)文件中增加一個(gè)標(biāo)記,該標(biāo)記用于表示本次onpause方法以及onstop方法的調(diào)用是由用戶針對(duì)該activity彈框組件的關(guān)閉事件觸發(fā)的。

當(dāng)系統(tǒng)判斷出onpause方法或者onstop方法被調(diào)用,可以進(jìn)一步檢查該activity彈框組件的類(lèi)文件中是否存在上述標(biāo)記。如果類(lèi)文件中存在上述標(biāo)記,則表明本次onpause方法以及onstop方法的調(diào)用是由用戶針對(duì)該該activity彈框組件的關(guān)閉事件觸發(fā),此時(shí)系統(tǒng)可以按照針對(duì)該activity彈框組件的正常關(guān)閉流程進(jìn)行響應(yīng)即可。

可見(jiàn),通過(guò)這種方式,可以在用戶針對(duì)該activity彈框組件執(zhí)行正常關(guān)閉的應(yīng)用場(chǎng)景中,避免由于系統(tǒng)通過(guò)執(zhí)行該activity彈框組件的onpause方法或onstop方法中加載的重啟邏輯,重新啟動(dòng)該activity彈框組件,而導(dǎo)致的誤操作的問(wèn)題。

以下結(jié)合具體的應(yīng)用場(chǎng)景對(duì)以上實(shí)施例中的技術(shù)方案進(jìn)行詳細(xì)描述。

在本例中示出的應(yīng)用的場(chǎng)景可以包括單點(diǎn)登錄的應(yīng)用場(chǎng)景,以及呼叫來(lái)電接聽(tīng)的應(yīng)用場(chǎng)景。

一方面,在示出的單點(diǎn)登錄的應(yīng)用場(chǎng)景中,上述彈框提示的觸發(fā)事件可以包括單點(diǎn)登錄事件。在該應(yīng)用場(chǎng)景中,用戶可以使用登錄賬號(hào)在終端上登錄,與該終端對(duì)應(yīng)的登錄服務(wù)端可以對(duì)該登錄賬號(hào)進(jìn)行驗(yàn)證,當(dāng)?shù)卿浄?wù)端 對(duì)該登錄賬號(hào)驗(yàn)證通過(guò)后,此時(shí)用戶成功登錄該終端。

當(dāng)用戶使用相同登錄賬號(hào)在其它終端上登錄時(shí),登錄服務(wù)端會(huì)向當(dāng)前的登錄終端發(fā)送一個(gè)通知消息,觸發(fā)當(dāng)前的登錄終端退出登錄狀態(tài)。當(dāng)前的登錄終端在接收到服務(wù)端發(fā)送的該通知消息后,可以認(rèn)為監(jiān)聽(tīng)到了單點(diǎn)登錄事件,此時(shí)可以退出登錄狀態(tài),并面向用戶輸出一個(gè)單點(diǎn)登錄提示框,在該提示框中可以填充用于提示本次退出登錄狀態(tài)的原因的提示文案。

系統(tǒng)在通過(guò)啟動(dòng)activity彈框組件輸出上述單點(diǎn)登錄提示框時(shí),為了避免輸出的該提示框被其它提示框或者頁(yè)面覆蓋,可以默認(rèn)將該activity彈框組件的運(yùn)行狀態(tài)設(shè)置為singletask模式。

當(dāng)該activity彈框組件被其它activity組件覆蓋時(shí),系統(tǒng)會(huì)調(diào)用onpause方法或者onstop方法,其中在onpause方法或者onstop方法中預(yù)先加載了重啟邏輯,系統(tǒng)通過(guò)執(zhí)行該onpause方法或者onstop方法的重啟邏輯后,可以重新啟動(dòng)該activity彈框組件。

由于該activity彈框組件被預(yù)配置為singletask模式,因此當(dāng)該activity彈框組件被重新啟動(dòng)后,系統(tǒng)會(huì)將想要覆蓋該activity彈框組件的其它activity組件彈出activity堆棧,該activity彈框組件會(huì)被重新移至activity堆棧頂部。在這種情況下,上述單點(diǎn)登錄提示框?qū)?huì)重新在系統(tǒng)前臺(tái)顯示,而不被其它提示框或者頁(yè)面覆蓋,而且由于想要覆蓋該activity彈框組件的其它activity組件被直接彈出activity堆棧,該其它activity組件所對(duì)應(yīng)的交互界面將無(wú)法顯示出來(lái),對(duì)于用戶來(lái)說(shuō)無(wú)法感知到頁(yè)面的變化。

可見(jiàn),在單點(diǎn)登錄的應(yīng)用場(chǎng)景中,通過(guò)這種方式,可以避免由于單點(diǎn)登錄提示框被覆蓋,而造成的提示信息無(wú)法及時(shí)的提示給用戶的問(wèn)題。

另一方面,在示出的呼叫來(lái)電接聽(tīng)的應(yīng)用場(chǎng)景中,上述彈框提示的觸發(fā)事件可以包括呼叫來(lái)電事件。在該應(yīng)用場(chǎng)景中,當(dāng)終端的系統(tǒng)監(jiān)聽(tīng)到呼叫來(lái)電時(shí),可以向用戶輸出一個(gè)來(lái)電提示框提示用戶接收到了來(lái)電,在該提示框中可以填充用于提示本次來(lái)電呼叫發(fā)起方的提示文案。用戶可以針對(duì)該提示框進(jìn)行相應(yīng)的操作,比如向上滑動(dòng)或者向下滑動(dòng),來(lái)接聽(tīng)該來(lái)電或者掛斷該 來(lái)電。

在這種場(chǎng)景中,如果系統(tǒng)在接收到呼叫來(lái)電時(shí)所輸出的來(lái)電提示框,被其它提示框或者頁(yè)面所覆蓋,那么可能導(dǎo)致用戶無(wú)法針對(duì)來(lái)電提示框進(jìn)行操作,來(lái)接聽(tīng)該來(lái)電,甚至還可能會(huì)導(dǎo)致該來(lái)電提示框被覆蓋時(shí),終端的按鍵(比如home鍵)失效等兼容性的問(wèn)題。

系統(tǒng)在通過(guò)啟動(dòng)activity彈框組件輸出上述來(lái)電提示框時(shí),為了避免輸出的該提示框被其它提示框或者頁(yè)面覆蓋,可以默認(rèn)將該activity彈框組件的運(yùn)行狀態(tài)設(shè)置為singletask模式。

當(dāng)該activity彈框組件被其它activity組件覆蓋時(shí),系統(tǒng)會(huì)調(diào)用onpause方法或者onstop方法,其中在onpause方法或者onstop方法中預(yù)先加載了重啟邏輯,系統(tǒng)通過(guò)執(zhí)行該onpause方法或者onstop方法的重啟邏輯后,可以重新啟動(dòng)該activity彈框組件。

由于該activity彈框組件被預(yù)配置為singletask模式,因此當(dāng)該activity彈框組件被重新啟動(dòng)后,系統(tǒng)會(huì)將想要覆蓋該activity彈框組件的其它activity組件彈出activity堆棧,該activity彈框組件會(huì)被重新移至activity堆棧頂部。在這種情況下,上述來(lái)電提示框?qū)?huì)重新在系統(tǒng)前臺(tái)顯示,而不被其它提示框或者頁(yè)面覆蓋,而且由于想要覆蓋該activity彈框組件的其它activity組件被直接彈出activity堆棧,該其它activity組件所對(duì)應(yīng)的交互界面將無(wú)法顯示出來(lái),對(duì)于用戶來(lái)說(shuō)無(wú)法感知到頁(yè)面的變化。

可見(jiàn),在呼叫來(lái)電接聽(tīng)的應(yīng)用場(chǎng)景中,通過(guò)這種方式,可以避免由于來(lái)電提示框被覆蓋,而造成的用戶無(wú)法接聽(tīng)來(lái)電,以及導(dǎo)致的終端按鍵的兼容性的問(wèn)題。

當(dāng)然,除了以上示出的應(yīng)用場(chǎng)景以外,以上實(shí)施例中的技術(shù)方案還可以應(yīng)用在其它的類(lèi)似場(chǎng)景中,即在實(shí)際應(yīng)用中,以上實(shí)施例中的技術(shù)方案所適用的應(yīng)用場(chǎng)景,除了以上示出的應(yīng)用場(chǎng)景以外,還可以包括所有需要面向用戶輸出彈框提示,并且輸出的提示框被其它提示框或者頁(yè)面覆蓋時(shí),可能會(huì)對(duì)系統(tǒng)中的app或者基本功能的使用造成影響的應(yīng)用場(chǎng)景,本申請(qǐng)不再一一 列舉。

在以上實(shí)施例中,通過(guò)在監(jiān)聽(tīng)到彈框提示的觸發(fā)事件時(shí),啟動(dòng)activity彈框組件輸出提示框;其中,該activity彈框組件的啟動(dòng)模式被預(yù)配置為單任務(wù)模式;判斷該activity彈框組件是否被其它activity組件覆蓋;當(dāng)該activity彈框組件被其它activity組件覆蓋時(shí),重新啟動(dòng)該activity彈框組件,以觸發(fā)將該activity彈框組件移至activity堆棧頂部使得所述提示框在系統(tǒng)前臺(tái)顯示;由于在本申請(qǐng)中,activity彈框組件為單任務(wù)模式,因此當(dāng)該activity彈框組件被重新啟動(dòng)后,可以立即被移至activity堆棧頂部,從而在啟動(dòng)activity彈框組件向用戶輸出了提示框后,可以確保該提示框不被覆蓋,始終在系統(tǒng)前臺(tái)顯示。

同時(shí),由于本申請(qǐng)不再基于android系統(tǒng)中的window組件進(jìn)行彈框,不再支持用戶對(duì)彈框進(jìn)行設(shè)置,因此可以避免由于用戶通過(guò)手動(dòng)設(shè)置在系統(tǒng)中將彈框禁掉導(dǎo)致無(wú)法進(jìn)行彈框的問(wèn)題。

另外,由于本申請(qǐng)通過(guò)activity彈框組件進(jìn)行彈框,因此可以實(shí)現(xiàn)將系統(tǒng)中任意的activity組件作為主體,在任意頁(yè)面中來(lái)進(jìn)行彈框,從而具有很高的靈活性。

與上述方法實(shí)施例相對(duì)應(yīng),本申請(qǐng)還提供了裝置的實(shí)施例。

請(qǐng)參見(jiàn)圖2,本申請(qǐng)?zhí)岢鲆环N基于android的彈框提示裝置20,應(yīng)用于終端;其中,請(qǐng)參見(jiàn)圖3,作為承載所述基于android的彈框提示裝置20的終端所涉及的硬件架構(gòu)中,通常包括cpu、內(nèi)存、非易失性存儲(chǔ)器、網(wǎng)絡(luò)接口以及內(nèi)部總線等;以軟件實(shí)現(xiàn)為例,所述基于android的彈框提示裝置20通??梢岳斫鉃榧虞d在內(nèi)存中的計(jì)算機(jī)程序,通過(guò)cpu運(yùn)行之后形成的軟硬件相結(jié)合的邏輯裝置,所述裝置20包括:

啟動(dòng)模塊201,用于在監(jiān)聽(tīng)到彈框提示的觸發(fā)事件時(shí),啟動(dòng)activity彈框組件輸出提示框;其中,該activity彈框組件的啟動(dòng)模式被預(yù)配置為單任務(wù)模式;

判斷模塊202,用于判斷該activity彈框組件是否被其它activity組件覆 蓋;

重啟模塊203,用于在該activity彈框組件被其它activity組件覆蓋時(shí),重新啟動(dòng)該activity彈框組件,以觸發(fā)將該activity彈框組件移至activity堆棧頂部使得所述提示框在系統(tǒng)前臺(tái)顯示。

在本例中,所述判斷模塊202具體用于:

判斷所述activity彈框組件的onpause或者onstop方法是否被調(diào)用;

當(dāng)所述activity彈框組件的onpause或者onstop方法被調(diào)用時(shí),確定該activity彈框組件被其它activity組件覆蓋。

在本例中,所述重啟模塊203具體用于:

當(dāng)所述activity彈框組件的onpause方法被調(diào)用,基于所述onpause方法重新啟動(dòng)該activity彈框組件;

當(dāng)所述activity彈框組件的onstop方法被調(diào)用時(shí),判斷所述activity彈框組件的onpause方法是否已被調(diào)用,如果所述onpause方法未被調(diào)用,則基于所述onstop方法重新啟動(dòng)該activity彈框組件。

在本例中,所述重啟模塊203進(jìn)一步用于:

判斷所述onpause方法或者所述onstop方法的調(diào)用是否是由針對(duì)所述activity彈框組件的關(guān)閉事件所觸發(fā);

如果所述onpause方法或者所述onstop方法的調(diào)用不是由針對(duì)所述activity彈框組件的關(guān)閉事件所觸發(fā),則基于所述onpause方法或者所述onstop方法重新啟動(dòng)該activity彈框組件。

在本例中,所述裝置20還包括:

關(guān)閉模塊204,用于在所述onpause方法或者所述onstop方法的調(diào)用是由針對(duì)所述activity彈框組件的關(guān)閉事件所觸發(fā)時(shí),針對(duì)所述activity彈框組件執(zhí)行正常關(guān)閉。

本領(lǐng)域技術(shù)人員在考慮說(shuō)明書(shū)及實(shí)踐這里公開(kāi)的發(fā)明后,將容易想到本申請(qǐng)的其它實(shí)施方案。本申請(qǐng)旨在涵蓋本申請(qǐng)的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本申請(qǐng)的一般性原理并包括本申 請(qǐng)未公開(kāi)的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。說(shuō)明書(shū)和實(shí)施例僅被視為示例性的,本申請(qǐng)的真正范圍和精神由下面的權(quán)利要求指出。

應(yīng)當(dāng)理解的是,本申請(qǐng)并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本申請(qǐng)的范圍僅由所附的權(quán)利要求來(lái)限制。

以上所述僅為本申請(qǐng)的較佳實(shí)施例而已,并不用以限制本申請(qǐng),凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)保護(hù)的范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
东丰县| 雷山县| 资溪县| 祁连县| 乐昌市| 北票市| 英山县| 云龙县| 宿州市| 晋州市| 丹棱县| 锦州市| 朝阳区| 鄂温| 涞水县| 独山县| 抚顺县| 巴林左旗| 屯门区| 福泉市| 哈巴河县| 上犹县| 江津市| 广宁县| 方城县| 望都县| 册亨县| 运城市| 龙南县| 中超| 离岛区| 子长县| 诸城市| 大石桥市| 吉安县| 日土县| 精河县| 英山县| 通山县| 巴里| 会东县|