android - 如何知道我的应用程序是在前台还是后台,android?

标签 android android-activity background task foreground

我需要检查我的应用程序是在后台还是前台运行,然后对其执行一些相关操作。

我搜索了很多,没有一个明确的解决方案。

  1. 让父 Activity 在其 onPause() 和 onResume() 方法中保留一些变量以相应地更新它们。当您创建任何新 Activity 时,将继承您的父 Activity 。 虽然这是我认为完成任务的最佳解决方案,但有时如果单击电源按钮,即使应用程序在后台,也会调用 onResume()。

  2. 使用 GETTASKS 权限 - 这个解决方案也不错。但它只能用于调试目的。如果您想将您的应用放在 Google Play 商店中,则不是。

Get Running Taks

还有其他首选解决方案吗?

最佳答案

这解决了我的问题:

  private boolean isAppOnForeground(Context context,String appPackageName) {
    ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
    if (appProcesses == null) {
        return false;
    }
    final String packageName = appPackageName;
    for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
        if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND && appProcess.processName.equals(packageName)) {
 //                Log.e("app",appPackageName);
            return true;
        }
    }
    return false;
}

关于android - 如何知道我的应用程序是在前台还是后台,android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26879951/

相关文章:

android - 如何制作可滚动的应用程序小部件?

java - Android:从 UncaughtExceptionHandler 继续工作

java - 从不扩展 Activity 的类调用 Activity

android - 如何在 Canvas 后面设置 CustomView 的背景?

css - 弧形菜单标签

android - 分割冗长的短信,一起阅读

android - 如何为简单的 mp3 播放器设计 Activity 服务交互?

html - 内部内容背景不会在 IE 中显示

android - Fancybox:无法在 Android 手机上滚动

java - 我从 Android ActivityForResult 发送一个可打包类并收到 null