當前位置:首頁 » 安卓系統 » android前台後台

android前台後台

發布時間: 2024-04-22 08:01:27

⑴ Android實現後台返回前台再次顯示廣告

市面上主流的APP都是在啟動頁做廣告展示的,即通常都是叫SplashActivity的是APP的launcher頁面,在manifest文件中配置, 2017年以來, 你會發現越來越多的APP在進入後台時隔一定時間後再次回到前台會再次顯示廣告界面, 3s自動播放, 或者手動點擊跳過

比如網易雲音樂, 淘寶, 京東商城啦, 似乎現在都是很主流的做法了,剛好最近項目中也有這樣的需求, 我們也實現了一遍,所以寫出來分享下,相互學習借鑒

要實現後台返回前台顯示廣告的邏輯, 主要的點在於監聽APP進入後台的時間點, 和APP從後台返回到前台的時間點

我們是在Application子類中完成的, 定義三個常量記錄當前APP狀態

在Application中需要監聽Activity的生命周期變化, 是application類已經提供好的一個方法, 它可以非常方便的監聽整個項目中的所有activity的生命周期

可以很清晰的看到Activity的生命周期函數都會回調到ActivityLifecycleCallbacks介面來, 我們讓Application實現此介面, 並在相應的回調方法中的完成具體的後台狀態的監聽

定義幾個需要用的變數記錄相關狀態和時間

在onResume回調中監聽回到前台的判斷, 只要activity一旦獲取焦點這個方法都會觸發,並且會觸發多次

在onStop回調中監聽程序進入後台的判斷

在onTrimMemory中監聽應用程序的切換,這也是一種監聽方式.因為有時候onStop的回調不一定會完全執行(尤其是切換最近使用APP列表時),所以這個方法也是必須的

最後, 就可以得到當前APP的准確狀態(sAppState)了, 是否可以再次顯示廣告

測試過程中,發現大部分品牌的手機都是OK的, 但是也有意外的,OPPO R9在切換應用時,一個回調都沒觸發,一定是Color OS改動太大, 目前尚無法處理.OV手機適配起來就是費勁啊

最後補充一個判斷程序是否前台的API

各位大佬們如果有更好的實現,歡迎提供思路!

⑵ android 如何監聽程序從前台轉入後台

一、通過ActivityManager.RunningAppProcessInfo判斷

首先,我們需要寫一個BaseActivity,然後讓我們應用程序的Activity都繼承自BaseActivity,這樣就可以統一管理,然後在BaseActivity的onResume()和onStop()方法中進行判斷應用程序是否進入到後台並且是否從後台返回到了前台,直接看代碼:

java">{

publicstaticbooleanisActive;//全局變數

@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
}

@Override
protectedvoidonResume(){
if(!isActive){
//app從後台喚醒,進入前台
isActive=true;
Log.i("ACTIVITY","程序從後台喚醒");
}
super.onResume();
}

@Override
protectedvoidonStart(){
super.onStart();
}

@Override
protectedvoidonPause(){
super.onPause();
}

@Override
protectedvoidonStop(){
if(!isAppOnForeground()){
//app進入後台
isActive=false;//記錄當前已經進入後台
Log.i("ACTIVITY","程序進入後台");
}
super.onStop();
}

@Override
protectedvoidonDestroy(){
super.onDestroy();
}

/**
*APP是否處於前台喚醒狀態
*
*@return
*/
(){
=(ActivityManager)getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
StringpackageName=getApplicationContext().getPackageName();
List<ActivityManager.RunningAppProcessInfo>appProcesses=activityManager
.getRunningAppProcesses();
if(appProcesses==null)
returnfalse;

for(ActivityManager.:appProcesses){
//.
if(appProcess.processName.equals(packageName)
&&appProcess.importance==ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND){
returntrue;
}
}

returnfalse;
}
}

⑶ android 如何實現後台時用通知欄顯示有新的消息,當在前台時不顯示通知

前台界面和後台服務都接收同一個有序廣播。前台界面優先順序高,onResume是注冊接收器,onStop時取消注冊,接收到廣播後就截斷,不再向下傳遞給服務;後台服務優先順序低,收到廣播後拉起通知欄通知。
這樣你打開前台界面後,就不會顯示通知;前台界面關閉後,只有後台收到廣播。

⑷ Android app後台回到前台時的監聽

在一次項目,有個需求涉及到切後台回到app時,需要調起一個彈窗,以這個需求為例子,跟大家分享下我如何實現的(大牛輕拍 = = )

首先,我們在app初始化時,要注冊activity生命周期的回調,我這邊項目里在BaseApplication初始化時調用()

它需要一個ActivityLifecycleCallbacks類型的參數

這個介面涉及到所有activity生命周期的回調

回歸正題,先初始化ActivityLifecycleCallbacks,

我們現在要做的是後台回前台,所以我們只選擇onActivityStarted和onActivityPaused

我是這么做判斷的,給個foregroundActivityCount去表示當前app有多少個activity處於啟動的狀態,給個Boolean值appInBackground判斷app是否處於後台,每次打開app,當啟動一個activity時,就統計開啟activity的次數,並且調用你所需要的監聽方法;只要在start 和 stop時判斷有所activity都stop了,當當前activity啟動次數為0時,說明app處於後台;

初始化已經完成,接下來就是怎麼調用了。我們去到後台回來時需要操作的activity或者fragment,在初始化時調取BaseApplication裡面剛才設定的方法

在裡面寫下你後台回來時你需要的操作

還有一個缺陷,假如是在指定fragment做監聽怎麼辦?其實都差不多的,fragment在activity里,綁定 了activity的生命周期,假設我們要在指定的fragment才調取這個方法,我們需要在加一層判斷,判斷當前fragment是否可見

這樣,只要你每次從後台回來,都可以監聽到,但如果不在當前fragment的話,就不會調用你設定的方法。

以上,是我剛接觸不久的問題,分享給大家,寫的不好的大家見諒,有問題可以評論或私信我,本人還是實習生,請輕拍= =

熱點內容
數據模型於資料庫系統 發布:2024-07-27 09:59:56 瀏覽:849
網站ip訪問量 發布:2024-07-27 09:59:55 瀏覽:286
java字元串字元數組 發布:2024-07-27 09:59:13 瀏覽:593
如何利用無線網路搭建伺服器 發布:2024-07-27 09:59:05 瀏覽:721
it天空解壓密碼 發布:2024-07-27 09:50:39 瀏覽:549
軟體腳本買賣 發布:2024-07-27 09:50:38 瀏覽:917
android對象轉json 發布:2024-07-27 09:50:15 瀏覽:183
安卓平板有什麼可以畫對稱的 發布:2024-07-27 09:36:03 瀏覽:133
羊創意腳本 發布:2024-07-27 09:29:30 瀏覽:895
榮耀v20升級存儲 發布:2024-07-27 09:20:19 瀏覽:486