您的位置:首页 > 移动开发 > Android开发

Android判断应用是否正在前台运行&Activity是否正在前台运行

2017-10-26 16:24 435 查看
原理:Application可以监听到应用中所有Activity的生命周期

在Application实现一下操作:

Activity的生命周期监听

private void registerActivityLifecycle() {
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
Logger.debug("onActivityCreated " + activity.getClass().getSimpleName());
}

@Override
public void onActivityStarted(Activity activity) {
Logger.debug("onActivityStarted " + activity.getClass().getSimpleName());
}

@Override
public void onActivityResumed(Activity activity) {
Logger.debug("onActivityResumed " + activity.getClass().getSimpleName());
if (activity instanceof CarListActivity) {
Logger.debug("CarListActivity");
setCarlistActivityForeground(true);
} else {
setCarlistActivityForeground(false);
}
Logger.debug("Activity Name ========== \n" + activity.getClass().getSimpleName());
saveActivityStatus(activity.getClass().getSimpleName(), true);
}

@Override
public void onActivityPaused(Activity activity) {
Logger.debug("onActivityPaused " + activity.getClass().getSimpleName());
}

@Override
public void onActivityStopped(Activity activity) {
Logger.debug("onActivityStopped " + activity.getClass().getSimpleName());
if (activity instanceof CarListActivity) {
Logger.debug("CarListActivity");
setCarlistActivityForeground(false);
}
Logger.debug("Activity Name ========== \n" + activity.getClass().getSimpleName());
saveActivityStatus(activity.getClass().getSimpleName(), false);
}

@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
Logger.debug("onActivitySaveInstanceState " + activity.getClass().getSimpleName());
}

@Override
public void onActivityDestroyed(Activity activity) {
Logger.debug("onActivityDestroyed " + activity.getClass().getSimpleName());
Logger.debug("isForeground= " + isForeground());
}
});
}


判断应用或者Activity是否运行在前台

//CarlistActivity是否正在前台运行
private boolean isCarlistActivityForeground = false;
private Map<String, Boolean> activityStatusMap;
//将activity是否运行在前台的状态,进行保存
private void saveActivityStatus(String activityName, boolean foreground) {
if (TextUtils.isEmpty(activityName))
return;
if (activityStatusMap == null)
activityStatusMap = new LinkedHashMap<>();
activityStatusMap.put(activityName, foreground);
}

/**
* 应用是否在前台运行
*
* @return
*/
public boolean isForeground() {
if (activityStatusMap == null)
return false;
if (activityStatusMap.keySet() == null)
return false;
Iterator<String> iterator = activityStatusMap.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
if (activityStatusMap.get(key)) {
return true;
}
}
return false;
}

public boolean isCarlistActivityForeground() {
return isCarlistActivityForeground;
}

private void setCarlistActivityForeground(boolean foreground) {
isCarlistActivityForeground = foreground;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android