TW201734790A - 基於Android的彈框提示方法及裝置 - Google Patents
基於Android的彈框提示方法及裝置 Download PDFInfo
- Publication number
- TW201734790A TW201734790A TW106101906A TW106101906A TW201734790A TW 201734790 A TW201734790 A TW 201734790A TW 106101906 A TW106101906 A TW 106101906A TW 106101906 A TW106101906 A TW 106101906A TW 201734790 A TW201734790 A TW 201734790A
- Authority
- TW
- Taiwan
- Prior art keywords
- activity
- component
- onpause
- onstop
- activity frame
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
- Telephone Function (AREA)
- Stored Programmes (AREA)
Abstract
本申請提供一種基於Android的彈框提示方法及裝置,其中的方法包括:在監聽到彈框提示的觸發事件時,啟動Activity彈框元件輸出提示框;其中,該Activity彈框元件的啟動模式被預配置為單任務模式;判斷該Activity彈框元件是否被其它Activity元件覆蓋;當該Activity彈框元件被其它Activity元件覆蓋時,重新啟動該Activity彈框元件,以觸發將該Activity彈框元件移至Activity堆疊頂部使得所述提示框在系統前台顯示。本申請可以在啟動Activity彈框元件向用戶輸出提示框後,確保該提示框不被覆蓋,始終在系統前台顯示。
Description
本申請關於通信領域,尤其關於一種基於Android的彈框提示方法及裝置。
在Android系統中,對於一些需要向用戶輸出彈框的事件,透過可以由系統向用戶輸出填充了提示文案的彈框來提示用戶。例如,該事件可以是單點登錄事件。所謂單點登錄,通常是指只允許用戶在一台設備上登錄其帳號,一旦用戶在其它設備上使用相同的登錄帳號登錄,需要把用戶從當前的設備上踢出登錄狀態。當系統檢測到了單點登錄事件時,可以向用戶輸出彈框提示用戶當前登錄帳號已在其它設備上登錄,此時該彈框中的提示文案可以包括用戶被踢出登錄的原因。然而,在相關技術中,Android系統在向用戶輸出彈框時,輸出的彈框可能會被其它彈框或者其它頁面所覆蓋,從而影響用戶對系統終端的APP或者基本功能的使用。
本申請提出一種基於Android的彈框提示方法,該方法包括:在監聽到彈框提示的觸發事件時,啟動Activity彈框元件輸出提示框;其中,該Activity彈框元件的啟動模式被預配置為單任務模式;判斷該Activity彈框元件是否被其它Activity元件覆蓋;當該Activity彈框元件被其它Activity元件覆蓋時,重新啟動該Activity彈框元件,以觸發將該Activity彈框元件移至Activity堆疊頂部使得所述提示框在系統前台顯示。
可選的,所述判斷該Activity彈框元件是否被其它Activity元件覆蓋包括:判斷所述Activity彈框元件的onPause或者onStop方法是否被調用;當所述Activity彈框元件的onPause或者onStop方法被調用時,確定該Activity彈框元件被其它Activity元件覆蓋。
可選的,所述當該Activity彈框元件被其它Activity元件覆蓋時,重新啟動該Activity彈框元件包括:當所述Activity彈框元件的onPause方法被調用,基於所述onPause方法重新啟動該Activity彈框元件;當所述Activity彈框元件的onStop方法被調用時,判斷所述Activity彈框元件的onPause方法是否已被調
用,如果所述onPause方法未被調用,則基於所述onStop方法重新啟動該Activity彈框元件。
可選的,所述基於所述onPause方法或者所述onStop方法重新啟動該Activity彈框元件包括:判斷所述onPause方法或者所述onStop方法的調用是否是由針對所述Activity彈框元件的關閉事件所觸發;如果所述onPause方法或者所述onStop方法的調用不是由針對所述Activity彈框元件的關閉事件所觸發,則基於所述onPause方法或者所述onStop方法重新啟動該Activity彈框元件。
可選的,所述方法還包括:如果所述onPause方法或者所述onStop方法的調用是由針對所述Activity彈框元件的關閉事件所觸發,則針對所述Activity彈框元件執行正常關閉。
本申請還提出一種基於Android的彈框提示裝置,該裝置包括:啟動模組,用於在監聽到彈框提示的觸發事件時,啟動Activity彈框元件輸出提示框;其中,該Activity彈框元件的啟動模式被預配置為單任務模式;判斷模組,用於判斷該Activity彈框元件是否被其它Activity元件覆蓋;重啟模組,用於在該Activity彈框元件被其它Activity元件覆蓋時,重新啟動該Activity彈框元件,以觸發將該Activity彈框元件移至Activity堆疊頂部使得所
述提示框在系統前台顯示。
可選的,所述判斷模組具體用於:判斷所述Activity彈框元件的onPause或者onStop方法是否被調用;當所述Activity彈框元件的onPause或者onStop方法被調用時,確定該Activity彈框元件被其它Activity元件覆蓋。
可選的,所述重啟模組具體用於:當所述Activity彈框元件的onPause方法被調用,基於所述onPause方法重新啟動該Activity彈框元件;當所述Activity彈框元件的onStop方法被調用時,判斷所述Activity彈框元件的onPause方法是否已被調用,如果所述onPause方法未被調用,則基於所述onStop方法重新啟動該Activity彈框元件。
可選的,所述重啟模組進一步用於:判斷所述onPause方法或者所述onStop方法的調用是否是由針對所述Activity彈框元件的關閉事件所觸發;如果所述onPause方法或者所述onStop方法的調用不是由針對所述Activity彈框元件的關閉事件所觸發,則基於所述onPause方法或者所述onStop方法重新啟動該Activity彈框元件。
可選的,所述裝置還包括:關閉模組,用於在所述onPause方法或者所述onStop方法的調用是由針對所述Activity彈框元件的關閉事件所
觸發時,針對所述Activity彈框元件執行正常關閉。
本申請中,透過在監聽到彈框提示的觸發事件時,啟動Activity彈框元件輸出提示框;其中,該Activity彈框元件的啟動模式被預配置為單任務模式;判斷該Activity彈框元件是否被其它Activity元件覆蓋;當該Activity彈框元件被其它Activity元件覆蓋時,重新啟動該Activity彈框元件,以觸發將該Activity彈框元件移至Activity堆疊頂部使得所述提示框在系統前台顯示,實現了當啟動Activity彈框元件向用戶輸出了提示框後,可以確保該提示框不被覆蓋,始終在系統前台顯示。
20‧‧‧基於Android的彈框提示裝置
201‧‧‧啟動模組
202‧‧‧判斷模組
203‧‧‧重啟模組
204‧‧‧關閉模組
圖1是本申請一實施例提供的一種基於Android的彈框提示方法的流程圖;圖2是本申請一實施例提供的一種基於Android的彈框提示裝置的邏輯框圖;圖3是本申請一實施例提供的承載所述一種基於Android的彈框提示裝置的終端的硬體結構圖。
在相關技術中,Android系統在向用戶輸出彈框時,通常可以透過如下方式實現:在示出的一種實現方式中,Android系統可以利用Android系統中的Window元件來進行彈框。
透過Window元件來彈框,可以實現在任意頁面彈框,且不被其他頁面覆蓋,然而透過Window元件來彈框,通常支持用戶對彈框進行設置,因此當用戶透過手動設置在系統中禁止彈框時,則會導致系統無法進行彈框。
在示出的另一種實現方式中,Android系統可以利用Activity元件來進行彈框。
在Android系統中,Activity元件是一個負責與用戶進行交互的元件,該元件可以提供一個交互介面,並在交互介面上顯示一些交互控制項(比如按鈕、彈窗等),用戶可以透過操作這些交互控制項與終端進行交互,終端在後台可以監聽用戶針對這些交互控制項的事件,來完成與本次交互對應的任務。終端透過Activity元件來彈框,可以實現將系統中任意的Activity元件作為彈框的主體,在任意頁面中來進行彈框。然而,由於Activity元件通常是以Activity堆疊的形態進行管理的,一旦該Activity元件在Activity堆疊中被其它Activity元件所覆蓋,即該其它Activity元件佔據Activity堆疊頂部,而該Activity元件不再處於Activity堆疊的頂部時,該Activity元件輸出的彈框將會被其它彈框或者介面覆蓋,因而無法在系統前台進行顯示,對系統的APP或者基本功能的使用造成影響。
在示出的另一種實現方式中,Android系統可以在一個固定的頁面進行彈框。
然而在一個固定的頁面進行彈框,無法實現在任意介
面進行彈框的目的,因此不夠靈活,而且交互體驗不好。例如,以在登錄頁面進行彈框為例,輸出的彈框智能在登錄頁面進行顯示,系統向用戶輸出彈框後,如果系統前台顯示的為其它頁面,那麼只有用戶在主動進行頁面切換,回到登錄頁面才能夠查看到系統輸出的彈框,從而會導致系統輸出的彈框無法及時的通知到用戶。
有鑑於此,本申請提出一種基於Android的彈框提示方法,透過在監聽到彈框提示的觸發事件時,啟動Activity彈框元件輸出提示框;其中,該Activity彈框元件的啟動模式被預配置為單任務模式;判斷該Activity彈框元件是否被其它Activity元件覆蓋;當該Activity彈框元件被其它Activity元件覆蓋時,重新啟動該Activity彈框元件,以觸發將該Activity彈框元件移至Activity堆疊頂部使得所述提示框在系統前台顯示;由於在本申請中,Activity彈框元件為單任務模式,因此當該Activity彈框元件被重新啟動後,可以立即被移至Activity堆疊頂部,從而在啟動Activity彈框元件向用戶輸出了提示框後,可以確保該提示框不被覆蓋,始終在系統前台顯示。
同時,由於本申請不再基於Android系統中的Window元件進行彈框,不再支援用戶對彈框進行設置,因此可以避免由於用戶透過手動設置在系統中禁止彈框時導致無法進行彈框的問題。
另外,由於本申請透過Activity彈框元件進行彈框,因此可以實現將系統中任意的Activity元件作為主體,在
任意頁面中來進行彈框,從而具有很高的靈活性。
下面透過具體實施例並結合具體的應用場景對本申請進行描述。
請參考圖1,圖1是本申請一實施例提供的一種基於Android的彈框提示方法,應用於終端,所述方法執行以下步驟:
步驟101,在監聽到彈框提示的觸發事件時,啟動Activity彈框元件輸出提示框;其中,該Activity彈框元件的啟動模式被預配置為單任務模式;
在本例中,上述終端可以包括搭載Android系統的智能終端;例如,智能手機、平板電腦等移動終端等。
上述彈框提示的觸發事件可以包括終端系統監聽到的需要面向用戶輸出彈框提示的事件。其中,在不同的應用場景中,上述彈框提示的觸發事件可以分別包括不同類型的事件。
例如,在單點登錄的應用場景中,上述彈框提示的觸發事件可以包括單點登錄事件。在該應用場景中,當用戶使用相同登錄帳號在其它終端上登錄時,當前終端可以退出登錄狀態,並面向用戶輸出一個提示框提示本次退出登錄狀態的原因。
又如,在呼叫來電接聽的應用場景中,上述彈框提示的觸發事件可以包括呼叫來電事件。當終端的系統監聽到呼叫來電時,可以向用戶輸出一個提示框提示用戶接收到了來電,用戶此時可以針對該提示框進行相應的操作(比
如向上滑動或者向下滑動)來接聽來電或者掛斷來電。
在本例中,終端在向用戶進行彈框時,仍然可以利用預設的Activity彈框元件來實現。當終端監聽到彈框提示的觸發事件後,可以啟動Activity彈框元件,創建一個用於輸出提示框的Activity實例,然後基於該實例將提示文案填充到提示框中向用戶輸出。
在Android系統中,Activity元件的啟動模式(launchMode)通常包括standard模式,singleTop模式,singleTask模式(即單任務模式)以及singleInstance模式等四種模式。
其中,當Activity元件的啟動模式為singleTask模式時,該Activity彈框元件將只允許唯一的Activity實例運行。
在singleTask模式下,該Activity彈框元件被啟動後,系統會判斷Activity堆疊中是否已經存在與該Activity彈框元件對應的Activity實例,由於當前Activity堆疊中已經存在與該Activity彈框元件對應的Activity實例,因此在singleTask模式下系統將不會再新建Activity實例,會將想要覆蓋該Activity彈框元件的其它Activity元件彈出Activity堆疊,並將已經存在的該Activity示例所對應的Activity彈框元件重新移至Activity堆疊的頂部。在這種情況下,基於該Activity實例輸出的提示框將會重新在系統前台顯示而不被覆蓋。
基於此,在本例中,為了使Activity彈框元件輸出的
提示框不被其它提示框或者頁面所覆蓋,可以在初始狀態下,將該Activity彈框元件的啟動模式設置為singleTask模式。
步驟102,判斷該Activity彈框元件是否被其它Activity元件覆蓋;
在Android系統中,Activity元件的生命週期中通常包括running狀態(運行狀態)、Pause狀態(暫停狀態)、Stop狀態(停止狀態)以及Destroy狀態(關閉)。
其中,running狀態,是指Activity元件處於可見並且可以和用戶進行交互的狀態。當Activity元件啟動後,初始狀態會處於running狀態,此時會被放入在Activity堆疊的頂部,在系統前台(螢幕最前端)顯示。
Pause狀態,是指Activity元件被其它的非全螢幕或者半透明的Activity元件所覆蓋,不再處於Activity堆疊頂部,但仍然處於可見並且可以和用戶進行交互的狀態。
Stop狀態,是指Activity元件被其它的Activity元件完全覆蓋,不再處於Activity堆疊頂部,該Activity元件的交互介面被完全隱藏的狀態。
Destroy狀態,是指Activity元件被關閉銷毀的狀態。
其中,以上四種運行狀態可以透過用戶針對該Activity元件的操作來進行轉換。
在Android系統中,當Activity元件啟動後,如果用戶透過操作啟動了新的Activity元件,那麼該新的Activity元件會被移入Activity堆疊頂部,對原有的該Activity元件進行覆蓋,此時系統會調用onPause方法將原有的Activity元件轉換為Pause狀態。
當該原有的Activity元件被完全覆蓋後,此時系統會調用onStop方法將該原有的Activity元件轉換為Stop狀態。
其中,當該原有的Activity元件處於Pause狀態或者Stop狀態時,系統會在系統記憶體不足的時候,透過調用onDestroy方法將該Activity元件轉換為Destroy狀態對該Activity元件執行關閉。
基於此,在示出的一種實施方式中,系統在判斷該Activity彈框元件是否被其它Activity元件覆蓋時,可以透過判斷該Activity彈框元件的onPause或者onStop方法是否被調用來實現。
當該Activity彈框元件的onPause或者onStop方法被調用時,則可以確定當前該Activity彈框元件被其它Activity元件覆蓋,不再處於堆疊頂部。
步驟103,當該Activity彈框元件被其它Activity元件覆蓋時,重新啟動該Activity彈框元件,以觸發將該Activity彈框元件移至Activity堆疊頂部使得所述提示框在系統前台顯示。
在本例中,當系統判斷出該Activity彈框元件被其它
Activity元件覆蓋時,可以重新啟動該Activity彈框元件。由於該Activity彈框元件已經被預配置為singleTask模式,因此當該Activity彈框元件被重新啟動後,系統會將想要覆蓋該Activity彈框元件的其它Activity元件彈出Activity堆疊,此時該Activity彈框元件將會被重新移至Activity堆疊頂部,在這種情況下,基於該Activity彈框元件唯一Activity實例輸出的提示框將會重新在系統前台顯示而不被覆蓋。
在示出的一種實施方式中,如果系統判斷出該Activity彈框元件的onPause方法被調用,此時系統可以確認該Activity彈框元件被其它Activity元件覆蓋。
在這種情況下,可以在onPause方法中預先載入針對Activity彈框元件的重啟邏輯;比如,開發人員可以在onPause( )方法中編輯用於針對Activity彈框元件執行重啟的執行代碼。當系統調用該onPause方法後,則可以重新啟動該Activity彈框元件。
在示出的另一種實施方式中,如果系統判斷出該Activity彈框元件的onStop方法被調用,此時系統可以確認該Activity彈框元件被其它Activity元件覆蓋。其中,該onStop方法也可以預先載入針對Activity彈框元件的重啟邏輯。
在Android系統中,系統在針對onPause方法和onStop方法進行調用時,通常是先調用onPause方法再調用onStop方法(該調用順序為Android系統的基本處理
機制);然而,在一些應用場景中,比如,併發彈框的場景(即當該Activity彈框元件輸出提示框的同時,就有其它Activity元件對該Activity彈框元件輸出的提示框進行覆蓋),系統可能會產生onPause方法和onStop方法調用順序上的異常,出現在onPause方法未調用的情況下繞過onPause方法而直接調用onStop方法的情況。
因此,針對這些異常的應用場景,為了避免透過onStop方法中載入的重啟邏輯對該Activity彈框元件進行重複處理,系統在判斷出該Activity彈框元件的onStop方法被調用時,可以進一步判斷該Activity彈框元件的onPause方法是否已經被調用,如果該Activity彈框元件的onPause方法已經被調用,表明該Activity彈框元件已經透過執行onPause方法中載入的重啟邏輯進行了處理,此時系統可以不再重複執行該onStop方法中載入的重啟邏輯對該Activity彈框元件進行重複處理。
當然,如果該Activity彈框元件的onPause方法未被調用,此時系統可能發生了調用異常,系統可以正常運行onStop方法中載入的重啟邏輯,重新啟動該Activity彈框元件。
其中,需要指出的是,系統在判斷該Activity彈框元件的onPause方法是否已經被調用時,可以透過在該Activity彈框元件的類別檔案中增加標記,然後透過檢查類別檔案中是否存在對應的標記來實現。
例如,在實現時,當系統調用onPause方法中載入的
重啟邏輯對該Activity彈框元件處理完成後,可以在該Activity彈框元件的類別檔案中增加一個標記,該標記用於表示該Activity彈框元件已經基於onPause方法中載入的重啟邏輯處理完成。
當系統判斷出該Activity彈框元件的onStop方法被調用,可以進一步檢查該Activity彈框元件的類別檔案中是否存在上述標記,來確認該Activity彈框元件的onPause方法是否已經被調用。如果類別檔案中存在上述標記,表明該Activity彈框元件已經基於onPause方法中載入的重啟邏輯處理完成,不再需要重複處理。
可見,透過這種方式,可以在onPause方法和onStop方法的調用順序異常的應用場景中,避免透過onStop方法中載入的重啟邏輯對該Activity彈框元件進行重複處理。
以上實施例中,描述了系統透過判斷Activity彈框元件的onPause或者onStop方法是否被調用,來確認Activity彈框元件是否被其它Activity元件覆蓋,並在判斷出Activity彈框元件被其它Activity元件覆蓋時,透過執行onPause或者onStop方法載入的重啟邏輯重新啟動該Activity彈框元件,使得該Activity彈框元件在預配置為singleTask模式的情況下,可以被重新移至Activity堆疊頂部,將輸出的提示框重新顯示在系統前台不被覆蓋的詳細過程。
然而,在Android系統中,系統除了會在Activity彈
框元件被其它Activity元件覆蓋時,調用onPause方法或者onStop方法以外,當用戶通常執行正常的關閉事件,來關閉該Activity彈框元件時,系統也會調用onPause方法或者onStop方法。
例如,當該Activity元件處於running狀態時,如果系統監聽到了用戶針對該Activity元件的關閉事件,系統會按照順序調用onPause方法和onStop方法將該Activity元件依次轉換為Pause狀態和Stop狀態,然後自動調用onDestroy方法將該Activity元件轉換為Destroy狀態對該Activity元件執行關閉。
其中,上述關閉事件可以包括與用戶針對該Activity彈框元件執行的關閉操作對應的事件;比如,以搭載Android系統的觸控螢幕智能手機為例,該關閉事件可以包括用戶針對手機上的返回鍵的點擊事件,即用戶可以透過點擊手機上的返回鍵,來關閉該Activity彈框元件。當手機系統在後台監聽到用戶針對返回鍵的點擊事件時,可以按照順序調用onPause方法和onStop方法將該Activity元件依次轉換為Pause狀態和Stop狀態,然後自動調用onDestroy方法針對該Activity元件執行關閉。
可見,在用戶針對該Activity彈框元件進行正常關閉的應用場景中,由於對onPause方法或onStop方法的調用是由用戶的正常關閉操作所觸發,而並不是由該Activity彈框元件被其它Activity元件覆蓋的事件所觸發,因此如果系統仍然透過執行該Activity彈框元件的
onPause方法或onStop方法中載入的重啟邏輯,重新啟動該Activity彈框元件,那麼將會導致用戶的誤操作(即用戶想要關閉該Activity彈框元件,但透過上述重啟邏輯卻重新啟動了該Activity彈框元件)。
因此,為了避免誤操作,當系統判斷出該Activity彈框元件的onPause方法或者onStop方法被調用時,系統在基於該onPause方法或者onStop方法中載入的重啟邏輯重新啟動該Activity彈框元件之前,可以進一步判斷該onPause方法或者onStop方法的調用是否是由用戶針對該Activity彈框元件的關閉事件所觸發的。
如果該onPause方法或者onStop方法的調用是由用戶針對該Activity彈框元件的關閉事件所觸發的,此時為針對該Activity彈框元件的正常關閉流程,系統可以允許該Activity彈框元件正常關閉,並按照針對該Activity彈框元件的正常關閉流程進行回應,自動調用Activity彈框元件的onDestroy方法關閉該Activity彈框元件。
當然,如果該onPause方法或者onStop方法的調用並不是由用戶針對該Activity彈框元件的關閉事件所觸發的,此時系統可以正常的執行onPause方法或者onStop方法中載入的重啟邏輯,重新啟動該Activity彈框元件,將該Activity彈框元件移至Activity堆疊的頂部。
其中,需要指出的是,系統在判斷上述onPause方法或者onStop方法的調用是否是由用戶針對該Activity彈框元件的關閉事件所觸發的,仍然可以透過在該Activity
彈框元件的類別檔案中增加標記,然後透過檢查類別檔案中是否存在對應的標記來實現。
例如,在實現時,當系統監聽到用戶針對該Activity彈框元件的關閉事件,調用onPause方法以及onStop方法後,可以在該Activity彈框元件的類別檔案中增加一個標記,該標記用於表示本次onPause方法以及onStop方法的調用是由用戶針對該Activity彈框元件的關閉事件觸發的。
當系統判斷出onPause方法或者onStop方法被調用,可以進一步檢查該Activity彈框元件的類別檔案中是否存在上述標記。如果類別檔案中存在上述標記,則表明本次onPause方法以及onStop方法的調用是由用戶針對該Activity彈框元件的關閉事件觸發,此時系統可以按照針對該Activity彈框元件的正常關閉流程進行回應即可。
可見,透過這種方式,可以在用戶針對該Activity彈框元件執行正常關閉的應用場景中,避免由於系統透過執行該Activity彈框元件的onPause方法或onStop方法中載入的重啟邏輯,重新啟動該Activity彈框元件,而導致的誤操作的問題。
以下結合具體的應用場景對以上實施例中的技術方案進行詳細描述。
在本例中示出的應用的場景可以包括單點登錄的應用場景,以及呼叫來電接聽的應用場景。
一方面,在示出的單點登錄的應用場景中,上述彈框
提示的觸發事件可以包括單點登錄事件。在該應用場景中,用戶可以使用登錄帳號在終端上登錄,與該終端對應的登錄服務端可以對該登錄帳號進行驗證,當登錄服務端對該登錄帳號驗證通過後,此時用戶成功登錄該終端。
當用戶使用相同登錄帳號在其它終端上登錄時,登錄服務端會向當前的登錄終端發送一個通知訊息,觸發當前的登錄終端退出登錄狀態。當前的登錄終端在接收到服務端發送的該通知訊息後,可以認為監聽到了單點登錄事件,此時可以退出登錄狀態,並面向用戶輸出一個單點登錄提示框,在該提示框中可以填充用於提示本次退出登錄狀態的原因的提示文案。
系統在透過啟動Activity彈框元件輸出上述單點登錄提示框時,為了避免輸出的該提示框被其它提示框或者頁面覆蓋,可以預設將該Activity彈框元件的運行狀態設置為singleTask模式。
當該Activity彈框元件被其它Activity元件覆蓋時,系統會調用onPause方法或者onStop方法,其中在onPause方法或者onStop方法中預先載入了重啟邏輯,系統透過執行該onPause方法或者onStop方法的重啟邏輯後,可以重新啟動該Activity彈框元件。
由於該Activity彈框元件被預配置為singleTask模式,因此當該Activity彈框元件被重新啟動後,系統會將想要覆蓋該Activity彈框元件的其它Activity元件彈出Activity堆疊,該Activity彈框元件會被重新移至
Activity堆疊頂部。在這種情況下,上述單點登錄提示框將會重新在系統前台顯示,而不被其它提示框或者頁面覆蓋,而且由於想要覆蓋該Activity彈框元件的其它Activity元件被直接彈出Activity堆疊,該其它Activity元件所對應的交互介面將無法顯示出來,對於用戶來說無法感知到頁面的變化。
可見,在單點登錄的應用場景中,透過這種方式,可以避免由於單點登錄提示框被覆蓋,而造成的提示資訊無法及時的提示給用戶的問題。
另一方面,在示出的呼叫來電接聽的應用場景中,上述彈框提示的觸發事件可以包括呼叫來電事件。在該應用場景中,當終端的系統監聽到呼叫來電時,可以向用戶輸出一個來電提示框提示用戶接收到了來電,在該提示框中可以填充用於提示本次來電呼叫發起方的提示文案。用戶可以針對該提示框進行相應的操作,比如向上滑動或者向下滑動,來接聽該來電或者掛斷該來電。
在這種場景中,如果系統在接收到呼叫來電時所輸出的來電提示框,被其它提示框或者頁面所覆蓋,那麼可能導致用戶無法針對來電提示框進行操作,來接聽該來電,甚至還可能會導致該來電提示框被覆蓋時,終端的按鍵(比如Home鍵)失效等相容性的問題。
系統在透過啟動Activity彈框元件輸出上述來電提示框時,為了避免輸出的該提示框被其它提示框或者頁面覆蓋,可以預設將該Activity彈框元件的運行狀態設置為
singleTask模式。
當該Activity彈框元件被其它Activity元件覆蓋時,系統會調用onPause方法或者onStop方法,其中在onPause方法或者onStop方法中預先載入了重啟邏輯,系統透過執行該onPause方法或者onStop方法的重啟邏輯後,可以重新啟動該Activity彈框元件。
由於該Activity彈框元件被預配置為singleTask模式,因此當該Activity彈框元件被重新啟動後,系統會將想要覆蓋該Activity彈框元件的其它Activity元件彈出Activity堆疊,該Activity彈框元件會被重新移至Activity堆疊頂部。在這種情況下,上述來電提示框將會重新在系統前台顯示,而不被其它提示框或者頁面覆蓋,而且由於想要覆蓋該Activity彈框元件的其它Activity元件被直接彈出Activity堆疊,該其它Activity元件所對應的交互介面將無法顯示出來,對於用戶來說無法感知到頁面的變化。
可見,在呼叫來電接聽的應用場景中,透過這種方式,可以避免由於來電提示框被覆蓋,而造成的用戶無法接聽來電,以及導致的終端按鍵的相容性的問題。
當然,除了以上示出的應用場景以外,以上實施例中的技術方案還可以應用在其它的類似場景中,即在實際應用中,以上實施例中的技術方案所適用的應用場景,除了以上示出的應用場景以外,還可以包括所有需要面向用戶輸出彈框提示,並且輸出的提示框被其它提示框或者頁面
覆蓋時,可能會對系統中的APP或者基本功能的使用造成影響的應用場景,本申請不再一一列舉。
在以上實施例中,透過在監聽到彈框提示的觸發事件時,啟動Activity彈框元件輸出提示框;其中,該Activity彈框元件的啟動模式被預配置為單任務模式;判斷該Activity彈框元件是否被其它Activity元件覆蓋;當該Activity彈框元件被其它Activity元件覆蓋時,重新啟動該Activity彈框元件,以觸發將該Activity彈框元件移至Activity堆疊頂部使得所述提示框在系統前台顯示;由於在本申請中,Activity彈框元件為單任務模式,因此當該Activity彈框元件被重新啟動後,可以立即被移至Activity堆疊頂部,從而在啟動Activity彈框元件向用戶輸出了提示框後,可以確保該提示框不被覆蓋,始終在系統前台顯示。
同時,由於本申請不再基於Android系統中的Window元件進行彈框,不再支援用戶對彈框進行設置,因此可以避免由於用戶透過手動設置在系統中禁止彈框時導致無法進行彈框的問題。
另外,由於本申請透過Activity彈框元件進行彈框,因此可以實現將系統中任意的Activity元件作為主體,在任意頁面中來進行彈框,從而具有很高的靈活性。
與上述方法實施例相對應,本申請還提供了裝置的實施例。
請參見圖2,本申請提出一種基於Android的彈框提
示裝置20,應用於終端;其中,請參見圖3,作為承載所述基於Android的彈框提示裝置20的終端所涉及的硬體架構中,通常包括CPU、記憶體、非揮發性記憶體、網路介面以及內部匯流排等;以軟體實現為例,所述基於Android的彈框提示裝置20通常可以理解為載入在記憶體中的電腦程式,透過CPU運行之後形成的軟硬體相結合的邏輯裝置,所述裝置20包括:啟動模組201,用於在監聽到彈框提示的觸發事件時,啟動Activity彈框元件輸出提示框;其中,該Activity彈框元件的啟動模式被預配置為單任務模式;判斷模組202,用於判斷該Activity彈框元件是否被其它Activity元件覆蓋;重啟模組203,用於在該Activity彈框元件被其它Activity元件覆蓋時,重新啟動該Activity彈框元件,以觸發將該Activity彈框元件移至Activity堆疊頂部使得所述提示框在系統前台顯示。在本例中,所述判斷模組202具體用於:判斷所述Activity彈框元件的onPause或者onStop方法是否被調用;當所述Activity彈框元件的onPause或者onStop方法被調用時,確定該Activity彈框元件被其它Activity元件覆蓋。
在本例中,所述重啟模組203具體用於:當所述Activity彈框元件的onPause方法被調用,基
於所述onPause方法重新啟動該Activity彈框元件;當所述Activity彈框元件的onStop方法被調用時,判斷所述Activity彈框元件的onPause方法是否已被調用,如果所述onPause方法未被調用,則基於所述onStop方法重新啟動該Activity彈框元件。
在本例中,所述重啟模組203進一步用於:判斷所述onPause方法或者所述onStop方法的調用是否是由針對所述Activity彈框元件的關閉事件所觸發;如果所述onPause方法或者所述onStop方法的調用不是由針對所述Activity彈框元件的關閉事件所觸發,則基於所述onPause方法或者所述onStop方法重新啟動該Activity彈框元件。
在本例中,所述裝置20還包括:關閉模組204,用於在所述onPause方法或者所述onStop方法的調用是由針對所述Activity彈框元件的關閉事件所觸發時,針對所述Activity彈框元件執行正常關閉。
本領域技術人員在考慮說明書及實踐這裡公開的發明後,將容易想到本申請的其它實施方案。本申請旨在涵蓋本申請的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本申請的一般性原理並包括本申請未公開的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本申請的真正範圍和精神由下面的申請專利範圍指出。
應當理解的是,本申請並不局限於上面已經描述並在附圖中示出的精確結構,並且可以在不脫離其範圍進行各種修改和改變。本申請的範圍僅由所附的申請專利範圍來限制。
以上所述僅為本申請的較佳實施例而已,並不用以限制本申請,凡在本申請的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本申請保護的範圍之內。
Claims (10)
- 一種基於Android的彈框提示方法,其特徵在於,該方法包括:在監聽到彈框提示的觸發事件時,啟動Activity彈框元件輸出提示框;其中,該Activity彈框元件的啟動模式被預配置為單任務模式;判斷該Activity彈框元件是否被其它Activity元件覆蓋;當該Activity彈框元件被其它Activity元件覆蓋時,重新啟動該Activity彈框元件,以觸發將該Activity彈框元件移至Activity堆疊頂部使得該提示框在系統前台顯示。
- 根據申請專利範圍第1項所述的方法,其中,所述判斷該Activity彈框元件是否被其它Activity元件覆蓋包括:判斷該Activity彈框元件的onPause或者onStop方法是否被調用;當該Activity彈框元件的onPause或者onStop方法被調用時,確定該Activity彈框元件被其它Activity元件覆蓋。
- 根據申請專利範圍第2項所述的方法,其中,所述當該Activity彈框元件被其它Activity元件覆蓋時,重新啟動該Activity彈框元件包括:當該Activity彈框元件的onPause方法被調用,基於 該onPause方法重新啟動該Activity彈框元件;當該Activity彈框元件的onStop方法被調用時,判斷該Activity彈框元件的onPause方法是否已被調用,如果該onPause方法未被調用,則基於該onStop方法重新啟動該Activity彈框元件。
- 根據申請專利範圍第3項所述的方法,其中,所述基於該onPause方法或者該onStop方法重新啟動該Activity彈框元件包括:判斷該onPause方法或者該onStop方法的調用是否是由針對該Activity彈框元件的關閉事件所觸發;如果該onPause方法或者該onStop方法的調用不是由針對該Activity彈框元件的關閉事件所觸發,則基於該onPause方法或者該onStop方法重新啟動該Activity彈框元件。
- 根據申請專利範圍第4項所述的方法,該方法還包括:如果該onPause方法或者該onStop方法的調用是由針對該Activity彈框元件的關閉事件所觸發,則針對該Activity彈框元件執行正常關閉。
- 一種基於Android的彈框提示裝置,其特徵在於,該裝置包括:啟動模組,用於在監聽到彈框提示的觸發事件時,啟動Activity彈框元件輸出提示框;其中,該Activity彈框元件的啟動模式被預配置為單任務模式; 判斷模組,用於判斷該Activity彈框元件是否被其它Activity元件覆蓋;重啟模組,用於在該Activity彈框元件被其它Activity元件覆蓋時,重新啟動該Activity彈框元件,以觸發將該Activity彈框元件移至Activity堆疊頂部使得該提示框在系統前台顯示。
- 根據申請專利範圍第6項所述的裝置,其中,該判斷模組具體用於:判斷該Activity彈框元件的onPause或者onStop方法是否被調用;當該Activity彈框元件的onPause或者onStop方法被調用時,確定該Activity彈框元件被其它Activity元件覆蓋。
- 根據申請專利範圍第7項所述的裝置,其中,該重啟模組具體用於:當該Activity彈框元件的onPause方法被調用,基於該onPause方法重新啟動該Activity彈框元件;當該Activity彈框元件的onStop方法被調用時,判斷該Activity彈框元件的onPause方法是否已被調用,如果該onPause方法未被調用,則基於該onStop方法重新啟動該Activity彈框元件。
- 根據申請專利範圍第8項所述的裝置,其中,該重啟模組進一步用於:判斷該onPause方法或者該onStop方法的調用是否 是由針對該Activity彈框元件的關閉事件所觸發;如果該onPause方法或者該onStop方法的調用不是由針對該Activity彈框元件的關閉事件所觸發,則基於該onPause方法或者該onStop方法重新啟動該Activity彈框元件。
- 根據申請專利範圍第9項所述的裝置,其中,該裝置還包括:關閉模組,用於在該onPause方法或者該onStop方法的調用是由針對該Activity彈框元件的關閉事件所觸發時,針對該Activity彈框元件執行正常關閉。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610150785.XA CN107203369A (zh) | 2016-03-16 | 2016-03-16 | 基于Android的弹框提示方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201734790A true TW201734790A (zh) | 2017-10-01 |
Family
ID=59850086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106101906A TW201734790A (zh) | 2016-03-16 | 2017-01-19 | 基於Android的彈框提示方法及裝置 |
Country Status (10)
Country | Link |
---|---|
US (2) | US10678564B2 (zh) |
EP (1) | EP3432140B1 (zh) |
JP (1) | JP6736130B2 (zh) |
KR (1) | KR102194055B1 (zh) |
CN (1) | CN107203369A (zh) |
MY (1) | MY192615A (zh) |
PH (1) | PH12018501968B1 (zh) |
SG (1) | SG11201807866TA (zh) |
TW (1) | TW201734790A (zh) |
WO (1) | WO2017157186A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107203369A (zh) | 2016-03-16 | 2017-09-26 | 阿里巴巴集团控股有限公司 | 基于Android的弹框提示方法及装置 |
CN117271027A (zh) * | 2018-01-29 | 2023-12-22 | 华为技术有限公司 | 认证窗口的显示方法和装置 |
CN108829487B (zh) * | 2018-06-28 | 2022-07-29 | 北京五八信息技术有限公司 | 一种弹窗的展示方法、装置、存储介质及终端 |
CN109213582A (zh) * | 2018-07-16 | 2019-01-15 | 北京奇虎科技有限公司 | 一种运行服务组件的方法、装置及终端 |
CN109543407B (zh) * | 2018-10-19 | 2024-04-05 | 三六零科技集团有限公司 | 一种Activity劫持的拦截方法及装置 |
CN110866247B (zh) * | 2018-11-23 | 2022-03-11 | 北京安天网络安全技术有限公司 | 一种安全防御方法、装置、电子设备及存储介质 |
CN109634702B (zh) * | 2018-12-10 | 2020-04-24 | 北京字节跳动网络技术有限公司 | 一种信息提示的方法、装置、电子设备及可读介质 |
CN112230924A (zh) * | 2020-11-09 | 2021-01-15 | 平安普惠企业管理有限公司 | 弹框提示方法、装置、计算机设备及存储介质 |
TWI765706B (zh) * | 2021-05-11 | 2022-05-21 | 凌華科技股份有限公司 | 彈出視窗的非侵入式共享處理方法及系統 |
KR20230019703A (ko) * | 2021-08-02 | 2023-02-09 | 삼성전자주식회사 | 화면 제어 방법 및 장치 |
EP4287631A4 (en) | 2021-08-02 | 2024-05-15 | Samsung Electronics Co., Ltd. | SCREEN CONTROL METHOD AND DEVICE |
CN113722035B (zh) * | 2021-08-31 | 2023-08-22 | 平安消费金融有限公司 | 弹框任务管理及弹框展示方法、装置、设备和存储介质 |
CN115080889B (zh) * | 2022-07-26 | 2023-01-17 | 阿里巴巴(中国)有限公司 | 一种显示模式切换方法及装置 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6801230B2 (en) * | 2001-12-18 | 2004-10-05 | Stanley W. Driskell | Method to display and manage computer pop-up controls |
US8484576B2 (en) * | 2003-04-17 | 2013-07-09 | Supersonic Aerospace International, Llc | System and method for customizing multiple windows of information on a display |
US20060070008A1 (en) * | 2004-09-29 | 2006-03-30 | Microsoft Corporation | Preserving browser window integrity |
US20080295025A1 (en) * | 2007-05-24 | 2008-11-27 | Gyure Wesley J | System and Method for Implementing Adaptive Window and Dialog Management |
US8510743B2 (en) * | 2007-10-31 | 2013-08-13 | Google Inc. | Terminating computer applications |
US8745191B2 (en) * | 2009-01-28 | 2014-06-03 | Headwater Partners I Llc | System and method for providing user notifications |
US9152299B2 (en) * | 2009-10-08 | 2015-10-06 | Red Hat, Inc. | Activity management tool |
US8698845B2 (en) | 2010-01-06 | 2014-04-15 | Apple Inc. | Device, method, and graphical user interface with interactive popup views |
US20120072867A1 (en) * | 2010-09-17 | 2012-03-22 | Apple Inc. | Presenting pop-up controls in a user interface |
CN102063325B (zh) * | 2011-01-06 | 2013-04-03 | 哈尔滨工业大学 | 一种嵌入51系列单片机的多任务实时操作系统的实现方法 |
CN102156615B (zh) * | 2011-04-01 | 2015-11-25 | 北京奇虎科技有限公司 | 一种悬浮窗显示方法及装置 |
US9037963B1 (en) * | 2011-04-22 | 2015-05-19 | Amazon Technologies, Inc. | Secure cross-domain web browser communications |
CN102521020B (zh) * | 2011-10-26 | 2014-05-21 | 华为终端有限公司 | 用于移动终端的应用屏幕截图方法和装置 |
CN103729176B (zh) * | 2012-10-12 | 2018-01-26 | 腾讯科技(深圳)有限公司 | 应用程序整合方法及装置 |
US20140136279A1 (en) * | 2012-11-14 | 2014-05-15 | Purna Chander Ramini | OneClue Software System and Method |
US10564792B2 (en) * | 2012-12-06 | 2020-02-18 | Samsung Electronics Co., Ltd. | Display device and method of indicating an active region in a milti-window display |
JP5722376B2 (ja) * | 2013-03-29 | 2015-05-20 | シャープ株式会社 | ユーザ状況確認システム、ユーザ状況確認方法、通信端末装置、ユーザ状況通知方法、及びコンピュータプログラム |
CN105359207B (zh) | 2013-05-31 | 2017-07-14 | 三菱电机株式会社 | 弹出显示装置 |
US20150058826A1 (en) * | 2013-08-26 | 2015-02-26 | The Trustees Of Columbia University In The City Of New York | Systems and methods for efficiently and effectively detecting mobile app bugs |
CN103559035B (zh) * | 2013-10-31 | 2016-09-07 | 青岛海信移动通信技术股份有限公司 | 一种应用于Android平台的处理事件的方法和装置 |
CN104915090A (zh) * | 2014-03-13 | 2015-09-16 | 宏碁股份有限公司 | 通知事件呈现方法与电子装置 |
US9984441B2 (en) * | 2014-06-18 | 2018-05-29 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Unobtrusive sizing and placement of pop-ups |
CN104123499B (zh) * | 2014-07-18 | 2017-09-01 | 北京金山安全软件有限公司 | 一种利用Android设备管理器对抗卸载的软件的识别方法及装置 |
CN104360794B (zh) * | 2014-11-21 | 2017-07-04 | 北京奇虎科技有限公司 | 通过识别全屏模式控制窗口弹出的方法及装置 |
CN104572110A (zh) * | 2015-01-19 | 2015-04-29 | 山东大学 | 一种安卓系统上Toast控件的优化方法 |
KR101543236B1 (ko) * | 2015-05-13 | 2015-08-11 | 주식회사 도진포스 | 모바일 장치를 이용한 시험 문제 출력 방법 및 그 장치 |
CN107203369A (zh) | 2016-03-16 | 2017-09-26 | 阿里巴巴集团控股有限公司 | 基于Android的弹框提示方法及装置 |
-
2016
- 2016-03-16 CN CN201610150785.XA patent/CN107203369A/zh active Pending
-
2017
- 2017-01-19 TW TW106101906A patent/TW201734790A/zh unknown
- 2017-03-03 WO PCT/CN2017/075520 patent/WO2017157186A1/zh active Application Filing
- 2017-03-03 SG SG11201807866TA patent/SG11201807866TA/en unknown
- 2017-03-03 JP JP2018549247A patent/JP6736130B2/ja active Active
- 2017-03-03 MY MYPI2018703247A patent/MY192615A/en unknown
- 2017-03-03 KR KR1020187028698A patent/KR102194055B1/ko active IP Right Grant
- 2017-03-03 EP EP17765728.5A patent/EP3432140B1/en active Active
-
2018
- 2018-09-13 PH PH12018501968A patent/PH12018501968B1/en unknown
- 2018-09-14 US US16/131,701 patent/US10678564B2/en active Active
-
2020
- 2020-03-16 US US16/820,543 patent/US10853102B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20180125498A (ko) | 2018-11-23 |
JP2019516161A (ja) | 2019-06-13 |
US20200218550A1 (en) | 2020-07-09 |
WO2017157186A1 (zh) | 2017-09-21 |
EP3432140A4 (en) | 2019-11-20 |
KR102194055B1 (ko) | 2020-12-23 |
EP3432140B1 (en) | 2022-02-23 |
US20190012190A1 (en) | 2019-01-10 |
US10678564B2 (en) | 2020-06-09 |
MY192615A (en) | 2022-08-29 |
PH12018501968A1 (en) | 2019-07-15 |
SG11201807866TA (en) | 2018-10-30 |
US10853102B2 (en) | 2020-12-01 |
PH12018501968B1 (en) | 2019-07-15 |
CN107203369A (zh) | 2017-09-26 |
JP6736130B2 (ja) | 2020-08-05 |
EP3432140A1 (en) | 2019-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201734790A (zh) | 基於Android的彈框提示方法及裝置 | |
AU2014375830B2 (en) | Data processing method for realizing multiple operating systems and terminal device | |
CN108182131B (zh) | 监控应用运行状态的方法、装置、存储介质及电子设备 | |
US10635456B2 (en) | Method for entering operating system desktop and mobile intelligent terminal | |
CN109308241B (zh) | 监听应用程序启动流程方法、装置、终端设备和存储介质 | |
US20170168628A1 (en) | Method and electronic device for split-screen display | |
US20180084420A1 (en) | Method and device for switching user mode of intelligent terminal, and intelligent terminal | |
CN110781080B (zh) | 程序调试方法及装置、存储介质 | |
CN110502324B (zh) | 云手机游戏的重启数据的处理方法、系统和存储介质 | |
Shaheen et al. | Android OS with its architecture and Android application with Dalvik virtual machine review | |
WO2019047183A1 (zh) | 按键显示方法、装置及终端 | |
CN111708431A (zh) | 人机交互方法、装置、头戴显示设备及存储介质 | |
CN110851057A (zh) | 配置bios的配置选项的方法和装置 | |
CN113467981A (zh) | 异常处理的方法和装置 | |
WO2017219482A1 (zh) | 启动方法和装置 | |
WO2016112602A1 (zh) | 快捷操作方法、快捷操作装置和终端 | |
WO2013142465A1 (en) | Device including a plurality of selectable operating systems | |
CN109783261B (zh) | 终端应用的崩溃处理方法及装置、电子设备、存储介质 | |
CN110659082A (zh) | 应用程序界面的显示方法、装置、终端及存储介质 | |
CN109471630B (zh) | 一种应用处理方法和设备 | |
CN114175026A (zh) | 一种应用监控方法、装置、存储介质及电子设备 | |
CN110704247B (zh) | 应用内存异常的处理方法、装置、电子设备及装置 | |
US10771620B1 (en) | Virtualization of smartphone functions in a virtual reality application | |
CN113141530A (zh) | 基于遥控交互方法、装置、电子设备和存储介质 | |
CN115967692A (zh) | 会话信息处理方法及相关设备 |