androidapp前台
Ⅰ 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 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的話,就不會調用你設定的方法。
以上,是我剛接觸不久的問題,分享給大家,寫的不好的大家見諒,有問題可以評論或私信我,本人還是實習生,請輕拍= =