android如何判断应用是否在前台?亲测有效,简单。

Application中继承 Application.ActivityLifecycleCallbacks ,

并在onCreate()方法中注册监听:registerActivityLifecycleCallbacks(this);

最后通过isForeground来判断即可。具体可查看下面代码:

当然一定要注意多进程的判断:在当前包名下

public class BaseApplication extends MultiDexApplication implements Application.ActivityLifecycleCallbacks {
private int activityCount;//activity的count数
public static boolean isForeground;//是否在前台
private static Context context;
private static Resources resource;
private String TAG = "----BaseApplication ";
protected static String BASE_URL = "";
public static Resources getAppResources() {
return resource;
}
@Override
public void onCreate() {
super.onCreate();
CrashHandler.getInstance().setContext(this);
context = getApplicationContext();
resource = context.getResources();
//全局管理Activity生命周期
registerActivityLifecycleCallbacks(this);
}


public static Context getContext() {
return context;
}


public static void setContext(Context context) {
BaseApplication.context = context;
}


public static boolean debug() {
return BuildConfig.DEBUG;
}


@Override


protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(getApplicationContext());
}
@Override
public File getCacheDir() {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File cacheDir = getExternalCacheDir();
if (cacheDir != null && (cacheDir.exists() || cacheDir.mkdirs())) {
return cacheDir;
}
}
File cacheDir = super.getCacheDir();
return cacheDir;
}


@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
Log.e(TAG+"activityCount","-----onActivityCreated="+activityCount);
}


@Override
public void onActivityStarted(Activity activity) {
activityCount++;
Log.e(TAG+"activityCount","-------onActivityStarted="+activityCount);
}
@Override
public void onActivityResumed(Activity activity) {
Log.e(TAG+"activityCount","-------onActivityResumed="+activityCount);
isForeground();
}


@Override
public void onActivityPaused(Activity activity) {
Log.e(TAG+"activityCount","-------onActivityPaused="+activityCount);
}
@Override
public void onActivityStopped(Activity activity) {
activityCount--;
Log.e(TAG+"activityCount","-------onActivityStopped="+activityCount);
isForeground();
}


/**
* 判断是否在前台
*/
private void isForeground() {
if (activityCount>0) {
isForeground = true;
}else {
isForeground=false;
}
Log.e(TAG+"activityCount=",+activityCount+"-------isForeground="+isForeground);
}


@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
Log.e(TAG+"activityCount","-------onActivitySaveInstanceState="+activityCount);
}


@Override
public void onActivityDestroyed(Activity activity) {
Log.e(TAG+"activityCount","-------onActivityDestroyed="+activityCount);


}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值