Android判断应用是否正在前台运行&Activity是否正在前台运行
2017-10-26 16:24
435 查看
原理:Application可以监听到应用中所有Activity的生命周期
在Application实现一下操作:
Activity的生命周期监听
判断应用或者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应用开发判断一个Activity是否正在运行
- android 判断当前应用的是否为前台task 判断当前的activity是否为top activity 判断当前应用的是否为后台task
- Android判断应用是否在前台运行
- android 如何判断应用是否在前台运行
- Android判断某一应用是否正在运行与判断某一Service是否正在运行
- android判断某个应用或者activity是否在运行
- Android判断某一应用是否正在运行与判断某一Service是否正在运行
- 判断Activity是否在运行、应用是否在前台、是否安装
- Android判断某个Activity是否正在前台显示
- Android 判断某个Activity 是否在前台运行
- Android 判断某个Activity 是否在前台运行的实例
- Android 判断某一个应用是否在前台运行的方法
- Android 判断应用是否在运行以及判断处于顶层的activity
- (android实战)判断当前task中的运行的activity是否为当前应用
- Android 判断应用程序是否在前台运行
- Android之后台服务判断本应用Activity是否处于栈顶
- [android] 如何判断程序是否在前台运行
- android 判断某个应用是否在运行
- 判断Android后台服务线程(Service类)是否正在运行
- Android之后台服务判断本应用Activity是否处于栈顶