如何检测启动器在Android中被带到了前台

时间:2015-03-11 08:45:24

标签: android

我知道有一种方法可以通过ActivityManager.getRunningTasks()实现这一目标。然而,这需要轮询并且将消耗太多电池。我想知道是否有类似于BroadcastReceiver的机制,每当启动器被带到前台时我都会收到通知。

1 个答案:

答案 0 :(得分:-2)

我认为使用ActivityManager.getRunningTasks()检索信息是临时的唯一方法。您可以尝试组合代码片段,通过调用PackageManager来获取有关HOME活动的信息来确定前台进程的包名称。

 public ActivityManager.RunningTaskInfo getForegroundTask()
    { 
        ActivityManager am = (ActivityManager) mContext.getSystemService( Activity.ACTIVITY_SERVICE );
        return am.getRunningTasks(1).get(0);
    } 

    public String getForegroundTaskPackageName()
    { 
        return getForegroundTask().topActivity.getPackageName();
    } 

  public String getCurrentHomePackageName()
    {    Intent intent = new Intent(Intent.ACTION_MAIN);
         intent.addCategory(Intent.CATEGORY_HOME);
         ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent,     PackageManager.MATCH_DEFAULT_ONLY);
        return resolveInfo.activityInfo.packageName;
    }