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